Merge "Use spy in PermissionMonitorTest." am: e666ae6ee5 am: 57b23ac131

am: d783fb242b

Change-Id: I1478b9c2bb12b6bfd161be99c5faa7aec76d9a7f
This commit is contained in:
Junyu Lai
2018-11-09 14:16:41 -08:00
committed by android-build-merger
2 changed files with 6 additions and 15 deletions

View File

@@ -165,7 +165,7 @@ public class PermissionMonitor {
} }
@VisibleForTesting @VisibleForTesting
int getDeviceFirstSdkInt() { protected int getDeviceFirstSdkInt() {
return Build.VERSION.FIRST_SDK_INT; return Build.VERSION.FIRST_SDK_INT;
} }

View File

@@ -30,7 +30,9 @@ import static android.os.Process.SYSTEM_UID;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq; import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
@@ -63,24 +65,13 @@ public class PermissionMonitorTest {
@Mock private PackageManager mPackageManager; @Mock private PackageManager mPackageManager;
private PermissionMonitor mPermissionMonitor; private PermissionMonitor mPermissionMonitor;
private int mMockFirstSdkInt;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mPackageManager.getPackagesForUid(anyInt())).thenReturn(MOCK_PACKAGE_NAMES); when(mPackageManager.getPackagesForUid(anyInt())).thenReturn(MOCK_PACKAGE_NAMES);
// Try to use spy() here for stubbing getDeviceFirstSdkInt value but the spies are loaded mPermissionMonitor = spy(new PermissionMonitor(mContext, null));
// by a custom class loader that's different from the loader used for loading the real
// thing. That means those two classes are not in the same package, so a package private
// method is not accessible. Hence, using override method to control FIRST_SDK_INT value
// instead of spy function for testing.
mPermissionMonitor = new PermissionMonitor(mContext, null) {
@Override
int getDeviceFirstSdkInt() {
return mMockFirstSdkInt;
}
};
} }
private boolean hasBgPermission(String partition, int targetSdkVersion, int uid, private boolean hasBgPermission(String partition, int targetSdkVersion, int uid,
@@ -166,13 +157,13 @@ public class PermissionMonitorTest {
@Test @Test
public void testHasUseBackgroundNetworksPermissionSystemUid() throws Exception { public void testHasUseBackgroundNetworksPermissionSystemUid() throws Exception {
mMockFirstSdkInt = VERSION_P; doReturn(VERSION_P).when(mPermissionMonitor).getDeviceFirstSdkInt();
assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID)); assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID));
assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID, CHANGE_WIFI_STATE)); assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID, CHANGE_WIFI_STATE));
assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID, assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID,
CONNECTIVITY_USE_RESTRICTED_NETWORKS)); CONNECTIVITY_USE_RESTRICTED_NETWORKS));
mMockFirstSdkInt = VERSION_Q; doReturn(VERSION_Q).when(mPermissionMonitor).getDeviceFirstSdkInt();
assertFalse(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID)); assertFalse(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID));
assertFalse(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID, CHANGE_WIFI_STATE)); assertFalse(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID, CHANGE_WIFI_STATE));
assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID, assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID,