Loading services/tests/servicestests/src/com/android/server/locales/LocaleManagerServiceTest.java +28 −17 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ import static org.mockito.Mockito.verify; import android.Manifest; import android.app.ActivityManagerInternal; import android.content.Context; import android.content.pm.InstallSourceInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.os.Binder; import android.os.LocaleList; Loading @@ -60,13 +62,16 @@ public class LocaleManagerServiceTest { private static final String DEFAULT_LOCALE_TAGS = "en-XC, ar-XB"; private static final LocaleList DEFAULT_LOCALES = LocaleList.forLanguageTags(DEFAULT_LOCALE_TAGS); private static final InstallSourceInfo DEFAULT_INSTALL_SOURCE_INFO = new InstallSourceInfo( /* initiatingPackageName = */ null, /* initiatingPackageSigningInfo = */ null, /* originatingPackageName = */ null, /* installingPackageName = */ null); private LocaleManagerService mLocaleManagerService; @Mock private Context mMockContext; @Mock private PackageManagerInternal mMockPackageManager; private PackageManagerInternal mMockPackageManagerInternal; @Mock private FakePackageConfigurationUpdater mFakePackageConfigurationUpdater; @Mock Loading @@ -75,11 +80,17 @@ public class LocaleManagerServiceTest { private ActivityManagerInternal mMockActivityManager; @Before public void setUp() { public void setUp() throws Exception { mMockContext = mock(Context.class); mMockActivityTaskManager = mock(ActivityTaskManagerInternal.class); mMockActivityManager = mock(ActivityManagerInternal.class); mMockPackageManager = mock(PackageManagerInternal.class); mMockPackageManagerInternal = mock(PackageManagerInternal.class); // For unit tests, set the default (null) installer info PackageManager mockPackageManager = mock(PackageManager.class); doReturn(DEFAULT_INSTALL_SOURCE_INFO).when(mockPackageManager) .getInstallSourceInfo(anyString()); doReturn(mockPackageManager).when(mMockContext).getPackageManager(); mFakePackageConfigurationUpdater = new FakePackageConfigurationUpdater(); doReturn(mFakePackageConfigurationUpdater) Loading @@ -93,13 +104,13 @@ public class LocaleManagerServiceTest { anyString(), anyString()); mLocaleManagerService = new LocaleManagerService(mMockContext, mMockActivityTaskManager, mMockActivityManager, mMockPackageManager); mMockActivityManager, mMockPackageManagerInternal); } @Test(expected = SecurityException.class) public void testSetApplicationLocales_arbitraryAppWithoutPermissions_fails() throws Exception { doReturn(DEFAULT_UID) .when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt()); .when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt()); setUpFailingPermissionCheckFor(Manifest.permission.CHANGE_CONFIGURATION); try { Loading @@ -107,7 +118,7 @@ public class LocaleManagerServiceTest { LocaleList.getEmptyLocaleList()); fail("Expected SecurityException"); } finally { verify(mMockContext).enforceCallingPermission( verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.CHANGE_CONFIGURATION), anyString()); assertNoLocalesStored(mFakePackageConfigurationUpdater.getStoredLocales()); Loading Loading @@ -142,7 +153,7 @@ public class LocaleManagerServiceTest { @Test public void testSetApplicationLocales_arbitraryAppWithPermission_succeeds() throws Exception { doReturn(DEFAULT_UID) .when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt()); .when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt()); // if package is not owned by the caller, the calling app should have the following // permission. We will mock this to succeed to imitate that. setUpPassingPermissionCheckFor(Manifest.permission.CHANGE_CONFIGURATION); Loading @@ -157,7 +168,7 @@ public class LocaleManagerServiceTest { @Test public void testSetApplicationLocales_callerOwnsPackage_succeeds() throws Exception { doReturn(Binder.getCallingUid()) .when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt()); .when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt()); mLocaleManagerService.setApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID, DEFAULT_LOCALES); Loading @@ -168,7 +179,7 @@ public class LocaleManagerServiceTest { @Test(expected = IllegalArgumentException.class) public void testSetApplicationLocales_invalidPackageOrUserId_fails() throws Exception { doReturn(INVALID_UID) .when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt()); .when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt()); try { mLocaleManagerService.setApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID, LocaleList.getEmptyLocaleList()); Loading @@ -180,7 +191,7 @@ public class LocaleManagerServiceTest { @Test(expected = SecurityException.class) public void testGetApplicationLocales_arbitraryAppWithoutPermission_fails() throws Exception { doReturn(DEFAULT_UID).when(mMockPackageManager) doReturn(DEFAULT_UID).when(mMockPackageManagerInternal) .getPackageUid(anyString(), anyInt(), anyInt()); setUpFailingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES); Loading @@ -188,7 +199,7 @@ public class LocaleManagerServiceTest { mLocaleManagerService.getApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID); fail("Expected SecurityException"); } finally { verify(mMockContext).enforceCallingPermission( verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.READ_APP_SPECIFIC_LOCALES), anyString()); } Loading @@ -198,7 +209,7 @@ public class LocaleManagerServiceTest { public void testGetApplicationLocales_appSpecificConfigAbsent_returnsEmptyList() throws Exception { // any valid app calling for its own package or having appropriate permission doReturn(DEFAULT_UID).when(mMockPackageManager) doReturn(DEFAULT_UID).when(mMockPackageManagerInternal) .getPackageUid(anyString(), anyInt(), anyInt()); setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES); doReturn(null) Loading @@ -213,7 +224,7 @@ public class LocaleManagerServiceTest { @Test public void testGetApplicationLocales_appSpecificLocalesAbsent_returnsEmptyList() throws Exception { doReturn(DEFAULT_UID).when(mMockPackageManager) doReturn(DEFAULT_UID).when(mMockPackageManagerInternal) .getPackageUid(anyString(), anyInt(), anyInt()); setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES); doReturn(new PackageConfig(/* nightMode = */ 0, /* locales = */ null)) Loading @@ -228,7 +239,7 @@ public class LocaleManagerServiceTest { @Test public void testGetApplicationLocales_callerOwnsAppAndConfigPresent_returnsLocales() throws Exception { doReturn(Binder.getCallingUid()).when(mMockPackageManager) doReturn(Binder.getCallingUid()).when(mMockPackageManagerInternal) .getPackageUid(anyString(), anyInt(), anyInt()); doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES)) .when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt()); Loading @@ -242,7 +253,7 @@ public class LocaleManagerServiceTest { @Test public void testGetApplicationLocales_arbitraryCallerWithPermissions_returnsLocales() throws Exception { doReturn(DEFAULT_UID).when(mMockPackageManager) doReturn(DEFAULT_UID).when(mMockPackageManagerInternal) .getPackageUid(anyString(), anyInt(), anyInt()); setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES); doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES)) Loading @@ -260,10 +271,10 @@ public class LocaleManagerServiceTest { private void setUpFailingPermissionCheckFor(String permission) { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(eq(permission), any()); .when(mMockContext).enforceCallingOrSelfPermission(eq(permission), any()); } private void setUpPassingPermissionCheckFor(String permission) { doNothing().when(mMockContext).enforceCallingPermission(eq(permission), any()); doNothing().when(mMockContext).enforceCallingOrSelfPermission(eq(permission), any()); } } Loading
services/tests/servicestests/src/com/android/server/locales/LocaleManagerServiceTest.java +28 −17 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ import static org.mockito.Mockito.verify; import android.Manifest; import android.app.ActivityManagerInternal; import android.content.Context; import android.content.pm.InstallSourceInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.os.Binder; import android.os.LocaleList; Loading @@ -60,13 +62,16 @@ public class LocaleManagerServiceTest { private static final String DEFAULT_LOCALE_TAGS = "en-XC, ar-XB"; private static final LocaleList DEFAULT_LOCALES = LocaleList.forLanguageTags(DEFAULT_LOCALE_TAGS); private static final InstallSourceInfo DEFAULT_INSTALL_SOURCE_INFO = new InstallSourceInfo( /* initiatingPackageName = */ null, /* initiatingPackageSigningInfo = */ null, /* originatingPackageName = */ null, /* installingPackageName = */ null); private LocaleManagerService mLocaleManagerService; @Mock private Context mMockContext; @Mock private PackageManagerInternal mMockPackageManager; private PackageManagerInternal mMockPackageManagerInternal; @Mock private FakePackageConfigurationUpdater mFakePackageConfigurationUpdater; @Mock Loading @@ -75,11 +80,17 @@ public class LocaleManagerServiceTest { private ActivityManagerInternal mMockActivityManager; @Before public void setUp() { public void setUp() throws Exception { mMockContext = mock(Context.class); mMockActivityTaskManager = mock(ActivityTaskManagerInternal.class); mMockActivityManager = mock(ActivityManagerInternal.class); mMockPackageManager = mock(PackageManagerInternal.class); mMockPackageManagerInternal = mock(PackageManagerInternal.class); // For unit tests, set the default (null) installer info PackageManager mockPackageManager = mock(PackageManager.class); doReturn(DEFAULT_INSTALL_SOURCE_INFO).when(mockPackageManager) .getInstallSourceInfo(anyString()); doReturn(mockPackageManager).when(mMockContext).getPackageManager(); mFakePackageConfigurationUpdater = new FakePackageConfigurationUpdater(); doReturn(mFakePackageConfigurationUpdater) Loading @@ -93,13 +104,13 @@ public class LocaleManagerServiceTest { anyString(), anyString()); mLocaleManagerService = new LocaleManagerService(mMockContext, mMockActivityTaskManager, mMockActivityManager, mMockPackageManager); mMockActivityManager, mMockPackageManagerInternal); } @Test(expected = SecurityException.class) public void testSetApplicationLocales_arbitraryAppWithoutPermissions_fails() throws Exception { doReturn(DEFAULT_UID) .when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt()); .when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt()); setUpFailingPermissionCheckFor(Manifest.permission.CHANGE_CONFIGURATION); try { Loading @@ -107,7 +118,7 @@ public class LocaleManagerServiceTest { LocaleList.getEmptyLocaleList()); fail("Expected SecurityException"); } finally { verify(mMockContext).enforceCallingPermission( verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.CHANGE_CONFIGURATION), anyString()); assertNoLocalesStored(mFakePackageConfigurationUpdater.getStoredLocales()); Loading Loading @@ -142,7 +153,7 @@ public class LocaleManagerServiceTest { @Test public void testSetApplicationLocales_arbitraryAppWithPermission_succeeds() throws Exception { doReturn(DEFAULT_UID) .when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt()); .when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt()); // if package is not owned by the caller, the calling app should have the following // permission. We will mock this to succeed to imitate that. setUpPassingPermissionCheckFor(Manifest.permission.CHANGE_CONFIGURATION); Loading @@ -157,7 +168,7 @@ public class LocaleManagerServiceTest { @Test public void testSetApplicationLocales_callerOwnsPackage_succeeds() throws Exception { doReturn(Binder.getCallingUid()) .when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt()); .when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt()); mLocaleManagerService.setApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID, DEFAULT_LOCALES); Loading @@ -168,7 +179,7 @@ public class LocaleManagerServiceTest { @Test(expected = IllegalArgumentException.class) public void testSetApplicationLocales_invalidPackageOrUserId_fails() throws Exception { doReturn(INVALID_UID) .when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt()); .when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt()); try { mLocaleManagerService.setApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID, LocaleList.getEmptyLocaleList()); Loading @@ -180,7 +191,7 @@ public class LocaleManagerServiceTest { @Test(expected = SecurityException.class) public void testGetApplicationLocales_arbitraryAppWithoutPermission_fails() throws Exception { doReturn(DEFAULT_UID).when(mMockPackageManager) doReturn(DEFAULT_UID).when(mMockPackageManagerInternal) .getPackageUid(anyString(), anyInt(), anyInt()); setUpFailingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES); Loading @@ -188,7 +199,7 @@ public class LocaleManagerServiceTest { mLocaleManagerService.getApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID); fail("Expected SecurityException"); } finally { verify(mMockContext).enforceCallingPermission( verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.READ_APP_SPECIFIC_LOCALES), anyString()); } Loading @@ -198,7 +209,7 @@ public class LocaleManagerServiceTest { public void testGetApplicationLocales_appSpecificConfigAbsent_returnsEmptyList() throws Exception { // any valid app calling for its own package or having appropriate permission doReturn(DEFAULT_UID).when(mMockPackageManager) doReturn(DEFAULT_UID).when(mMockPackageManagerInternal) .getPackageUid(anyString(), anyInt(), anyInt()); setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES); doReturn(null) Loading @@ -213,7 +224,7 @@ public class LocaleManagerServiceTest { @Test public void testGetApplicationLocales_appSpecificLocalesAbsent_returnsEmptyList() throws Exception { doReturn(DEFAULT_UID).when(mMockPackageManager) doReturn(DEFAULT_UID).when(mMockPackageManagerInternal) .getPackageUid(anyString(), anyInt(), anyInt()); setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES); doReturn(new PackageConfig(/* nightMode = */ 0, /* locales = */ null)) Loading @@ -228,7 +239,7 @@ public class LocaleManagerServiceTest { @Test public void testGetApplicationLocales_callerOwnsAppAndConfigPresent_returnsLocales() throws Exception { doReturn(Binder.getCallingUid()).when(mMockPackageManager) doReturn(Binder.getCallingUid()).when(mMockPackageManagerInternal) .getPackageUid(anyString(), anyInt(), anyInt()); doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES)) .when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt()); Loading @@ -242,7 +253,7 @@ public class LocaleManagerServiceTest { @Test public void testGetApplicationLocales_arbitraryCallerWithPermissions_returnsLocales() throws Exception { doReturn(DEFAULT_UID).when(mMockPackageManager) doReturn(DEFAULT_UID).when(mMockPackageManagerInternal) .getPackageUid(anyString(), anyInt(), anyInt()); setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES); doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES)) Loading @@ -260,10 +271,10 @@ public class LocaleManagerServiceTest { private void setUpFailingPermissionCheckFor(String permission) { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(eq(permission), any()); .when(mMockContext).enforceCallingOrSelfPermission(eq(permission), any()); } private void setUpPassingPermissionCheckFor(String permission) { doNothing().when(mMockContext).enforceCallingPermission(eq(permission), any()); doNothing().when(mMockContext).enforceCallingOrSelfPermission(eq(permission), any()); } }