1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 * except in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the 10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 11 * KIND, either express or implied. See the License for the specific language governing 12 * permissions and limitations under the License. 13 */ 14 15 package android.testing; 16 17 import static android.content.pm.PackageManager.PERMISSION_DENIED; 18 import static android.content.pm.PackageManager.PERMISSION_GRANTED; 19 20 import static org.junit.Assert.assertEquals; 21 22 import android.Manifest.permission; 23 import android.content.pm.PackageManager; 24 import android.net.Uri; 25 import android.support.test.InstrumentationRegistry; 26 import android.support.test.filters.SmallTest; 27 import android.testing.TestableLooper.RunWithLooper; 28 29 import org.junit.Rule; 30 import org.junit.Test; 31 import org.junit.runner.RunWith; 32 33 @SmallTest 34 @RunWith(AndroidTestingRunner.class) 35 public class TestablePermissionsTest { 36 37 private static final Uri URI_1 = Uri.parse("content://my.authority/path1"); 38 private static final Uri URI_2 = Uri.parse("content://my.authority/path2"); 39 40 @Rule 41 public TestableContext mContext = new TestableContext(InstrumentationRegistry.getContext()); 42 43 @Test 44 public void testCheck() { 45 mContext.getTestablePermissions().setPermission(permission.INTERACT_ACROSS_USERS, 46 PERMISSION_GRANTED); 47 mContext.getTestablePermissions().setPermission(permission.INTERACT_ACROSS_USERS_FULL, 48 PERMISSION_DENIED); 49 assertEquals(PERMISSION_GRANTED, 50 mContext.checkPermission(permission.INTERACT_ACROSS_USERS, 0, 0)); 51 assertEquals(PERMISSION_DENIED, 52 mContext.checkPermission(permission.INTERACT_ACROSS_USERS_FULL, 0, 0)); 53 } 54 55 @Test 56 public void testCheckUri() { 57 mContext.getTestablePermissions().setPermission(URI_1, PERMISSION_GRANTED); 58 mContext.getTestablePermissions().setPermission(URI_2, PERMISSION_DENIED); 59 60 assertEquals(PERMISSION_GRANTED, mContext.checkUriPermission(URI_1, 0, 0, 0)); 61 assertEquals(PERMISSION_DENIED, mContext.checkUriPermission(URI_2, 0, 0, 0)); 62 } 63 64 @Test 65 public void testEnforceNoException() { 66 mContext.getTestablePermissions().setPermission(permission.INTERACT_ACROSS_USERS, 67 PERMISSION_GRANTED); 68 mContext.enforceCallingOrSelfPermission(permission.INTERACT_ACROSS_USERS, ""); 69 } 70 71 @Test(expected = SecurityException.class) 72 public void testEnforceWithException() { 73 mContext.getTestablePermissions().setPermission(permission.INTERACT_ACROSS_USERS, 74 PERMISSION_DENIED); 75 mContext.enforceCallingOrSelfPermission(permission.INTERACT_ACROSS_USERS, ""); 76 } 77 78 @Test 79 public void testEnforceUriNoException() { 80 mContext.getTestablePermissions().setPermission(URI_1, PERMISSION_GRANTED); 81 mContext.enforceUriPermission(URI_1, 0, 0, 0, ""); 82 } 83 84 @Test(expected = SecurityException.class) 85 public void testEnforceUriWithException() { 86 mContext.getTestablePermissions().setPermission(URI_1, PERMISSION_DENIED); 87 mContext.enforceUriPermission(URI_1, 0, 0, 0, ""); 88 } 89 90 }