Fix ActionDisabledByAdminDialogHelperTest by setting a mock SupervisionManager as system service.

A shadow of DPM is automatically added as system service by Robolectric infra. Since SupervisionManager is new, it doesn't have that.

We will consider changing Robolectric to do the same thing when SupervisionManager becomes more stable.

Flag: TEST_ONLY
Bug: 382034839
Test: atest ActionDisabledByAdminDialogHelperTest
Change-Id: I389938df10ce97c563511473b0aeaee52225f419
This commit is contained in:
Vitor Carvalho
2025-01-22 16:50:59 +00:00
parent 1d28b612fe
commit e866c91b84

View File

@@ -29,7 +29,9 @@ import static org.mockito.Mockito.verify;
import android.app.Activity; import android.app.Activity;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.app.supervision.SupervisionManager;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.os.Process; import android.os.Process;
import android.os.UserHandle; import android.os.UserHandle;
@@ -49,14 +51,19 @@ import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows; import org.robolectric.Shadows;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow; import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowContextImpl;
import org.robolectric.shadows.ShadowProcess; import org.robolectric.shadows.ShadowProcess;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@@ -66,19 +73,24 @@ import org.robolectric.shadows.ShadowProcess;
ShadowActivity.class ShadowActivity.class
}) })
public class ActionDisabledByAdminDialogHelperTest { public class ActionDisabledByAdminDialogHelperTest {
@Rule public final MockitoRule mMocks = MockitoJUnit.rule();
private static final ComponentName ADMIN_COMPONENT = private static final ComponentName ADMIN_COMPONENT =
new ComponentName("some.package.name", "some.package.name.SomeClass"); new ComponentName("some.package.name", "some.package.name.SomeClass");
private static final int USER_ID = 123; private static final int USER_ID = 123;
private static final EnforcedAdmin ENFORCED_ADMIN = private static final EnforcedAdmin ENFORCED_ADMIN =
new EnforcedAdmin(ADMIN_COMPONENT, new UserHandle(USER_ID)); new EnforcedAdmin(ADMIN_COMPONENT, new UserHandle(USER_ID));
@Mock private SupervisionManager mSupervisionManager;
private ActionDisabledByAdminDialogHelper mHelper; private ActionDisabledByAdminDialogHelper mHelper;
private Activity mActivity; private Activity mActivity;
private org.robolectric.shadows.ShadowActivity mActivityShadow;
@Before @Before
public void setUp() { public void setUp() {
mActivity = Robolectric.setupActivity(CustomActivity.class); mActivity = Robolectric.setupActivity(CustomActivity.class);
mActivityShadow = Shadow.extract(mActivity); ShadowContextImpl shadowContext = Shadow.extract(mActivity.getBaseContext());
shadowContext.setSystemService(Context.SUPERVISION_SERVICE, mSupervisionManager);
mHelper = new ActionDisabledByAdminDialogHelper(mActivity); mHelper = new ActionDisabledByAdminDialogHelper(mActivity);
} }