Add tests for guest user events
Also, move ACTION_USER_GUEST_EXIT_CONFIRMED so it is only logged after safety-check Test: ROBOTEST_FILTER="com.android.settings.users.UserSettingsTest" m RunSettingsRoboTests Test: ROBOTEST_FILTER="com.android.settings.users.UserDetailsSettingsTest" m RunSettingsRoboTests Bug: 184200796 Change-Id: Id18aa914bbb262984d7c7cf4b8a4ffdde278fd23
This commit is contained in:
@@ -829,13 +829,14 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
/**
|
/**
|
||||||
* Erase the current user (guest) and switch to another user.
|
* Erase the current user (guest) and switch to another user.
|
||||||
*/
|
*/
|
||||||
private void exitGuest() {
|
@VisibleForTesting
|
||||||
|
void exitGuest() {
|
||||||
// Just to be safe
|
// Just to be safe
|
||||||
mMetricsFeatureProvider.action(getActivity(),
|
|
||||||
SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED);
|
|
||||||
if (!isCurrentUserGuest()) {
|
if (!isCurrentUserGuest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
mMetricsFeatureProvider.action(getActivity(),
|
||||||
|
SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED);
|
||||||
removeThisUser();
|
removeThisUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -25,6 +25,7 @@ import static com.google.common.truth.Truth.assertThat;
|
|||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
@@ -35,6 +36,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
|
|||||||
import static org.robolectric.Shadows.shadowOf;
|
import static org.robolectric.Shadows.shadowOf;
|
||||||
|
|
||||||
import android.app.admin.DevicePolicyManager;
|
import android.app.admin.DevicePolicyManager;
|
||||||
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -56,6 +58,7 @@ import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
|
|||||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedPreference;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -105,6 +108,8 @@ public class UserDetailsSettingsTest {
|
|||||||
private FragmentActivity mActivity;
|
private FragmentActivity mActivity;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private UserCapabilities mUserCapabilities;
|
private UserCapabilities mUserCapabilities;
|
||||||
|
@Mock
|
||||||
|
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
private UserDetailsSettings mFragment;
|
private UserDetailsSettings mFragment;
|
||||||
private Bundle mArguments;
|
private Bundle mArguments;
|
||||||
private UserInfo mUserInfo;
|
private UserInfo mUserInfo;
|
||||||
@@ -128,6 +133,7 @@ public class UserDetailsSettingsTest {
|
|||||||
|
|
||||||
ReflectionHelpers.setField(mFragment, "mUserManager", userManager);
|
ReflectionHelpers.setField(mFragment, "mUserManager", userManager);
|
||||||
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
|
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
|
||||||
|
ReflectionHelpers.setField(mFragment, "mMetricsFeatureProvider", mMetricsFeatureProvider);
|
||||||
doReturn(mActivity).when(mFragment).getActivity();
|
doReturn(mActivity).when(mFragment).getActivity();
|
||||||
doReturn(mActivity).when(mFragment).getContext();
|
doReturn(mActivity).when(mFragment).getContext();
|
||||||
|
|
||||||
@@ -472,6 +478,23 @@ public class UserDetailsSettingsTest {
|
|||||||
mFragment.onPreferenceClick(mSwitchUserPref);
|
mFragment.onPreferenceClick(mSwitchUserPref);
|
||||||
|
|
||||||
verify(mFragment).switchUser();
|
verify(mFragment).switchUser();
|
||||||
|
verify(mMetricsFeatureProvider, never()).action(any(),
|
||||||
|
eq(SettingsEnums.ACTION_SWITCH_TO_GUEST));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onPreferenceClick_switchToGuestClicked_canSwitch_shouldSwitch() {
|
||||||
|
setupSelectedGuest();
|
||||||
|
mUserManager.setSwitchabilityStatus(SWITCHABILITY_STATUS_OK);
|
||||||
|
mFragment.mSwitchUserPref = mSwitchUserPref;
|
||||||
|
mFragment.mRemoveUserPref = mRemoveUserPref;
|
||||||
|
mFragment.mAppAndContentAccessPref = mAppAndContentAccessPref;
|
||||||
|
mFragment.mUserInfo = mUserInfo;
|
||||||
|
|
||||||
|
mFragment.onPreferenceClick(mSwitchUserPref);
|
||||||
|
|
||||||
|
verify(mFragment).switchUser();
|
||||||
|
verify(mMetricsFeatureProvider).action(any(), eq(SettingsEnums.ACTION_SWITCH_TO_GUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -176,6 +176,22 @@ public class UserSettingsTest {
|
|||||||
assertThat(UserSettings.assignDefaultPhoto(null, ACTIVE_USER_ID)).isFalse();
|
assertThat(UserSettings.assignDefaultPhoto(null, ACTIVE_USER_ID)).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testExitGuest_ShouldLogAction() {
|
||||||
|
mUserCapabilities.mIsGuest = true;
|
||||||
|
mFragment.exitGuest();
|
||||||
|
verify(mMetricsFeatureProvider).action(any(),
|
||||||
|
eq(SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testExitGuestWhenNotGuest_ShouldNotLogAction() {
|
||||||
|
mUserCapabilities.mIsGuest = false;
|
||||||
|
mFragment.exitGuest();
|
||||||
|
verify(mMetricsFeatureProvider, never()).action(any(),
|
||||||
|
eq(SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void withDisallowRemoveUser_ShouldDisableRemoveUser() {
|
public void withDisallowRemoveUser_ShouldDisableRemoveUser() {
|
||||||
// TODO(b/115781615): Tidy robolectric tests
|
// TODO(b/115781615): Tidy robolectric tests
|
||||||
|
Reference in New Issue
Block a user