diff options
author | Bill Yi <byi@google.com> | 2018-11-28 18:35:00 -0800 |
---|---|---|
committer | Bill Yi <byi@google.com> | 2018-11-28 18:35:00 -0800 |
commit | 0f8320f6b95736ea4b703764a7d11a8a6ca13674 (patch) | |
tree | d7b300e81f05e45345ada1ffcaf39b2512dd8f6f /tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java | |
parent | f02b56678700a4035d0ad8882f7d20371bb96ee2 (diff) | |
parent | 911e6566751a60c29eada6ad0679694bed11be4f (diff) | |
download | Car-pie-platform-release.tar.gz |
Merge pi-qpr1-release PQ1A.181105.017.A1 to pi-platform-releasepie-platform-releasepie-cuttlefish-testing
Change-Id: Ibafbc25e1d704d7e84a168b32d35a165dd41e06f
Diffstat (limited to 'tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java')
-rw-r--r-- | tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java | 136 |
1 files changed, 124 insertions, 12 deletions
diff --git a/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java b/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java index faa7bd0965..48d447bc0f 100644 --- a/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java +++ b/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java @@ -21,18 +21,17 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; import android.car.user.CarUserManagerHelper; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.UserInfo; +import android.location.LocationManager; +import android.os.UserHandle; +import android.os.UserManager; import android.support.test.runner.AndroidJUnit4; -import java.util.ArrayList; -import java.util.List; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -40,6 +39,9 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.ArrayList; +import java.util.List; + /** * This class contains unit tests for the {@link CarUserService}. * @@ -60,17 +62,23 @@ public class CarUserServiceTest { private Context mApplicationContext; @Mock + private LocationManager mLocationManager; + + @Mock private CarUserManagerHelper mCarUserManagerHelper; /** * Initialize all of the objects with the @Mock annotation. */ @Before - public void setUp() throws Exception { + public void setUpMocks() throws Exception { MockitoAnnotations.initMocks(this); - when(mMockContext.getApplicationContext()).thenReturn(mApplicationContext); + doReturn(mApplicationContext).when(mMockContext).getApplicationContext(); + doReturn(mLocationManager).when(mMockContext).getSystemService(Context.LOCATION_SERVICE); mCarUserService = new CarUserService(mMockContext, mCarUserManagerHelper); + + doReturn(new ArrayList<>()).when(mCarUserManagerHelper).getAllUsers(); } /** @@ -83,9 +91,10 @@ public class CarUserServiceTest { mCarUserService.init(); verify(mMockContext).registerReceiver(eq(mCarUserService), argument.capture()); IntentFilter intentFilter = argument.getValue(); - assertThat(intentFilter.countActions()).isEqualTo(1); + assertThat(intentFilter.countActions()).isEqualTo(2); assertThat(intentFilter.getAction(0)).isEqualTo(Intent.ACTION_LOCKED_BOOT_COMPLETED); + assertThat(intentFilter.getAction(1)).isEqualTo(Intent.ACTION_USER_SWITCHED); } /** @@ -102,20 +111,123 @@ public class CarUserServiceTest { */ @Test public void testStartsSecondaryAdminUserOnFirstRun() { + UserInfo admin = mockAdmin(/* adminId= */ 10); + + mCarUserService.onReceive(mMockContext, + new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED)); + + verify(mCarUserManagerHelper).createNewAdminUser(CarUserService.OWNER_NAME); + verify(mCarUserManagerHelper).switchToUser(admin); + } + + /** + * Test that the {@link CarUserService} disable modify account for user 0 upon first run. + */ + @Test + public void testDisableModifyAccountsForSystemUserOnFirstRun() { + // Mock system user. + UserInfo systemUser = new UserInfo(); + systemUser.id = UserHandle.USER_SYSTEM; + doReturn(systemUser).when(mCarUserManagerHelper).getSystemUserInfo(); + + mockAdmin(10); + + mCarUserService.onReceive(mMockContext, + new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED)); + + verify(mCarUserManagerHelper) + .setUserRestriction(systemUser, UserManager.DISALLOW_MODIFY_ACCOUNTS, true); + } + + /** + * Test that the {@link CarUserService} disable location service for user 0 upon first run. + */ + @Test + public void testDisableLocationForSystemUserOnFirstRun() { + mockAdmin(/* adminId= */ 10); + + mCarUserService.onReceive(mMockContext, + new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED)); + + verify(mLocationManager).setLocationEnabledForUser( + /* enabled= */ false, UserHandle.of(UserHandle.USER_SYSTEM)); + } + + /** + * Test that the {@link CarUserService} updates last active user to the first admin user + * on first run. + */ + @Test + public void testUpdateLastActiveUserOnFirstRun() { + UserInfo admin = mockAdmin(/* adminId= */ 10); + + mCarUserService.onReceive(mMockContext, + new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED)); + + verify(mCarUserManagerHelper) + .setLastActiveUser(admin.id, /* skipGlobalSetting= */ false); + } + + /** + * Test that the {@link CarUserService} starts up the last active user on reboot. + */ + @Test + public void testStartsLastActiveUserOnReboot() { List<UserInfo> users = new ArrayList<>(); int adminUserId = 10; UserInfo admin = new UserInfo(adminUserId, CarUserService.OWNER_NAME, UserInfo.FLAG_ADMIN); + int secUserId = 11; + UserInfo secUser = + new UserInfo(secUserId, CarUserService.OWNER_NAME, UserInfo.FLAG_ADMIN); + + users.add(admin); + users.add(secUser); + doReturn(users).when(mCarUserManagerHelper).getAllUsers(); - // doReturn(users).when(mCarUserManagerHelper.getAllUsers()); - doReturn(admin).when(mCarUserManagerHelper).createNewAdminUser(CarUserService.OWNER_NAME); - doReturn(true).when(mCarUserManagerHelper).switchToUser(admin); + doReturn(secUserId).when(mCarUserManagerHelper).getInitialUser(); mCarUserService.onReceive(mMockContext, new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED)); - verify(mCarUserManagerHelper).createNewAdminUser(CarUserService.OWNER_NAME); - verify(mCarUserManagerHelper).switchToUser(admin); + verify(mCarUserManagerHelper).switchToUserId(secUserId); + } + + /** + * Test that the {@link CarUserService} updates last active user on user switch intent. + */ + @Test + public void testLastActiveUserUpdatedOnUserSwitch() { + int lastActiveUserId = 11; + + Intent intent = new Intent(Intent.ACTION_USER_SWITCHED); + intent.putExtra(Intent.EXTRA_USER_HANDLE, lastActiveUserId); + + doReturn(true).when(mCarUserManagerHelper).isPersistentUser(lastActiveUserId); + + mCarUserService.onReceive(mMockContext, intent); + + verify(mCarUserManagerHelper).setLastActiveUser( + lastActiveUserId, /* skipGlobalSetting= */ false); + } + + /** + * Test that the {@link CarUserService} sets default guest restrictions on first boot. + */ + @Test + public void testInitializeGuestRestrictionsOnFirstRun() { + mockAdmin(/* adminId= */ 10); + + mCarUserService.onReceive(mMockContext, + new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED)); + + verify(mCarUserManagerHelper).initDefaultGuestRestrictions(); + } + + private UserInfo mockAdmin(int adminId) { + UserInfo admin = new UserInfo(adminId, CarUserService.OWNER_NAME, UserInfo.FLAG_ADMIN); + doReturn(admin).when(mCarUserManagerHelper).createNewAdminUser(CarUserService.OWNER_NAME); + return admin; } } |