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.net.Uri; 24 25 import androidx.test.InstrumentationRegistry; 26 import androidx.test.filters.SmallTest; 27 28 import org.junit.Rule; 29 import org.junit.Test; 30 import org.junit.runner.RunWith; 31 32 @SmallTest 33 @RunWith(AndroidTestingRunner.class) 34 public class TestablePermissionsTest { 35 36 private static final Uri URI_1 = Uri.parse("content://my.authority/path1"); 37 private static final Uri URI_2 = Uri.parse("content://my.authority/path2"); 38 39 @Rule 40 public TestableContext mContext = new TestableContext(InstrumentationRegistry.getContext()); 41 42 @Test testCheck()43 public void testCheck() { 44 mContext.getTestablePermissions().setPermission(permission.INTERACT_ACROSS_USERS, 45 PERMISSION_GRANTED); 46 mContext.getTestablePermissions().setPermission(permission.INTERACT_ACROSS_USERS_FULL, 47 PERMISSION_DENIED); 48 assertEquals(PERMISSION_GRANTED, 49 mContext.checkPermission(permission.INTERACT_ACROSS_USERS, 0, 0)); 50 assertEquals(PERMISSION_DENIED, 51 mContext.checkPermission(permission.INTERACT_ACROSS_USERS_FULL, 0, 0)); 52 } 53 54 @Test testCheckUri()55 public void testCheckUri() { 56 mContext.getTestablePermissions().setPermission(URI_1, PERMISSION_GRANTED); 57 mContext.getTestablePermissions().setPermission(URI_2, PERMISSION_DENIED); 58 59 assertEquals(PERMISSION_GRANTED, mContext.checkUriPermission(URI_1, 0, 0, 0)); 60 assertEquals(PERMISSION_DENIED, mContext.checkUriPermission(URI_2, 0, 0, 0)); 61 } 62 63 @Test testEnforceNoException()64 public void testEnforceNoException() { 65 mContext.getTestablePermissions().setPermission(permission.INTERACT_ACROSS_USERS, 66 PERMISSION_GRANTED); 67 mContext.enforceCallingOrSelfPermission(permission.INTERACT_ACROSS_USERS, ""); 68 } 69 70 @Test(expected = SecurityException.class) testEnforceWithException()71 public void testEnforceWithException() { 72 mContext.getTestablePermissions().setPermission(permission.INTERACT_ACROSS_USERS, 73 PERMISSION_DENIED); 74 mContext.enforceCallingOrSelfPermission(permission.INTERACT_ACROSS_USERS, ""); 75 } 76 77 @Test testEnforceUriNoException()78 public void testEnforceUriNoException() { 79 mContext.getTestablePermissions().setPermission(URI_1, PERMISSION_GRANTED); 80 mContext.enforceUriPermission(URI_1, 0, 0, 0, ""); 81 } 82 83 @Test(expected = SecurityException.class) testEnforceUriWithException()84 public void testEnforceUriWithException() { 85 mContext.getTestablePermissions().setPermission(URI_1, PERMISSION_DENIED); 86 mContext.enforceUriPermission(URI_1, 0, 0, 0, ""); 87 } 88 89 }