aboutsummaryrefslogtreecommitdiff
path: root/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java
diff options
context:
space:
mode:
authorYing Zheng <yizheng@google.com>2018-06-26 12:47:26 -0700
committerYing Zheng <yizheng@google.com>2018-06-26 16:38:20 -0700
commit1ab32b66ef7467e536df727b0b9419dd31556a8e (patch)
tree8c3401ee455a11b6abcacee880382cd09643b75b /tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java
parent4aff01310e105f5a26a418e1a1cd8596ca262b69 (diff)
downloadCar-1ab32b66ef7467e536df727b0b9419dd31556a8e.tar.gz
Disable location for headless system user.
Bug: 79535369 Test: Unit test Change-Id: If93a9aedd69588dbc939fe7fa1c963ae91a85dc6
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.java67
1 files changed, 57 insertions, 10 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 03a692f43b..710b847875 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,13 +21,13 @@ 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;
@@ -62,6 +62,9 @@ public class CarUserServiceTest {
private Context mApplicationContext;
@Mock
+ private LocationManager mLocationManager;
+
+ @Mock
private CarUserManagerHelper mCarUserManagerHelper;
/**
@@ -70,7 +73,8 @@ public class CarUserServiceTest {
@Before
public void setUp() 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);
}
@@ -112,7 +116,6 @@ public class CarUserServiceTest {
doReturn(users).when(mCarUserManagerHelper).getAllUsers();
doReturn(admin).when(mCarUserManagerHelper).createNewAdminUser(CarUserService.OWNER_NAME);
- doReturn(true).when(mCarUserManagerHelper).switchToUser(admin);
mCarUserService.onReceive(mMockContext,
new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED));
@@ -128,21 +131,64 @@ public class CarUserServiceTest {
public void testDisableModifyAccountsForSystemUserOnFirstRun() {
List<UserInfo> users = new ArrayList<>();
- UserInfo user0 = new UserInfo();
- user0.id = UserHandle.USER_SYSTEM;
+ UserInfo systemUser = new UserInfo();
+ systemUser.id = UserHandle.USER_SYSTEM;
int adminUserId = 10;
UserInfo admin = new UserInfo(adminUserId, CarUserService.OWNER_NAME, UserInfo.FLAG_ADMIN);
doReturn(users).when(mCarUserManagerHelper).getAllUsers();
- doReturn(user0).when(mCarUserManagerHelper).getSystemUserInfo();
+ doReturn(systemUser).when(mCarUserManagerHelper).getSystemUserInfo();
doReturn(admin).when(mCarUserManagerHelper).createNewAdminUser(CarUserService.OWNER_NAME);
- doReturn(true).when(mCarUserManagerHelper).switchToUser(admin);
mCarUserService.onReceive(mMockContext,
new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED));
verify(mCarUserManagerHelper)
- .setUserRestriction(user0, UserManager.DISALLOW_MODIFY_ACCOUNTS, true);
+ .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() {
+ List<UserInfo> users = new ArrayList<>();
+
+ UserInfo systemUser = new UserInfo();
+ systemUser.id = UserHandle.USER_SYSTEM;
+ int adminUserId = 10;
+ UserInfo admin = new UserInfo(adminUserId, CarUserService.OWNER_NAME, UserInfo.FLAG_ADMIN);
+
+ doReturn(users).when(mCarUserManagerHelper).getAllUsers();
+ doReturn(systemUser).when(mCarUserManagerHelper).getSystemUserInfo();
+ doReturn(admin).when(mCarUserManagerHelper).createNewAdminUser(CarUserService.OWNER_NAME);
+
+ mCarUserService.onReceive(mMockContext,
+ new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED));
+
+ verify(mLocationManager)
+ .setLocationEnabledForUser(/* enabled= */ false, UserHandle.of(systemUser.id));
+ }
+
+ /**
+ * Test that the {@link CarUserService} updates last active user to the first admin user
+ * on first run.
+ */
+ @Test
+ public void testUpdateLastActiveUserOnFirstRun() {
+ List<UserInfo> users = new ArrayList<>();
+
+ UserInfo systemUser = new UserInfo();
+ systemUser.id = UserHandle.USER_SYSTEM;
+ int adminUserId = 10;
+ UserInfo admin = new UserInfo(adminUserId, CarUserService.OWNER_NAME, UserInfo.FLAG_ADMIN);
+
+ doReturn(users).when(mCarUserManagerHelper).getAllUsers();
+ doReturn(admin).when(mCarUserManagerHelper).createNewAdminUser(CarUserService.OWNER_NAME);
+
+ mCarUserService.onReceive(mMockContext,
+ new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED));
+
verify(mCarUserManagerHelper)
.setLastActiveUser(adminUserId, /* skipGlobalSetting= */ false);
}
@@ -180,10 +226,11 @@ public class CarUserServiceTest {
public void testLastActiveUserUpdatedOnUserSwitch() {
int lastActiveUserId = 11;
- doReturn(false).when(mCarUserManagerHelper).isForegroundUserEphemeral();
-
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(