/** * Revoke the given permissions for the current process and user. * * Has no effect if permissions were not previously granted. */ public void denyPermissions(String... permissionNames) { getShadowInstrumentation().denyPermissions(permissionNames); }
@Test public void removeSystemService_getSystemServiceReturnsNull() { shadowContextWrapper.removeSystemService(Context.WALLPAPER_SERVICE); assertThat(context.getSystemService(Context.WALLPAPER_SERVICE)).isNull(); } }
@Test @Config(minSdk = 23) public void revokeSelfPermission() { shadowContextWrapper.grantPermissions("MY_PERMISSON"); assertThat(contextWrapper.checkSelfPermission("MY_PERMISSON")) .isEqualTo(PackageManager.PERMISSION_GRANTED); shadowContextWrapper.denyPermissions("MY_PERMISSON"); assertThat(contextWrapper.checkSelfPermission("MY_PERMISSON")) .isEqualTo(PackageManager.PERMISSION_DENIED); }
@Test @Config(minSdk = 23) public void checkAdditionalSelfPermission() { shadowContextWrapper.grantPermissions("MY_PERMISSON"); assertThat(contextWrapper.checkSelfPermission("MY_PERMISSON")) .isEqualTo(PackageManager.PERMISSION_GRANTED); assertThat(contextWrapper.checkSelfPermission("ANOTHER_PERMISSON")) .isEqualTo(PackageManager.PERMISSION_DENIED); shadowContextWrapper.grantPermissions("ANOTHER_PERMISSON"); assertThat(contextWrapper.checkSelfPermission("ANOTHER_PERMISSON")) .isEqualTo(PackageManager.PERMISSION_GRANTED); }
@Test public void cannotStoreSecurelyWithNoPermission() { shadowContext.denyPermissions(USE_FINGERPRINT); when(fingerprintManager.isHardwareDetected()).thenReturn(true); when(fingerprintManager.hasEnrolledFingerprints()).thenReturn(true); assertThat(whorlwind.canStoreSecurely()).isFalse(); verifyZeroInteractions(storage); }
@Test public void broadcasts_shouldBeLogged() { Intent broadcastIntent = new Intent("foo"); contextWrapper.sendBroadcast(broadcastIntent); List<Intent> broadcastIntents = shadowOf(contextWrapper).getBroadcastIntents(); assertTrue(broadcastIntents.size() == 1); assertEquals(broadcastIntent, broadcastIntents.get(0)); }
@Test public void revokePermissionUidPid() { shadowContextWrapper.grantPermissions(1, 1, "MY_PERMISSON"); assertThat(contextWrapper.checkPermission("MY_PERMISSON", 1, 1)) .isEqualTo(PackageManager.PERMISSION_GRANTED); shadowContextWrapper.denyPermissions(1, 1, "MY_PERMISSON"); assertThat(contextWrapper.checkPermission("MY_PERMISSON", 1, 1)) .isEqualTo(PackageManager.PERMISSION_DENIED); }
@Test @Config(minSdk = 23) public void checkSelfPermission() { assertThat(contextWrapper.checkSelfPermission("MY_PERMISSON")) .isEqualTo(PackageManager.PERMISSION_DENIED); shadowContextWrapper.grantPermissions("MY_PERMISSON"); assertThat(contextWrapper.checkSelfPermission("MY_PERMISSON")) .isEqualTo(PackageManager.PERMISSION_GRANTED); assertThat(contextWrapper.checkSelfPermission("UNKNOWN_PERMISSON")) .isEqualTo(PackageManager.PERMISSION_DENIED); }
@Test public void writeThrowsOnSubscribeWhenCannotStoreSecurely() { shadowContext.denyPermissions(USE_FINGERPRINT); Throwable expected = whorlwind.write("test", ByteString.encodeUtf8("test")).blockingGet(); assertThat(expected).hasMessage( "Can't store securely. Check canStoreSecurely() before attempting to read/write."); verifyZeroInteractions(storage); }
/** * Consumes the most recent {@code Intent} started by {@link * ContextWrapper#startActivity(android.content.Intent)} and returns it. * * @return the most recently started {@code Intent} */ public Intent getNextStartedActivity() { return getShadowInstrumentation().getNextStartedActivity(); }
@Test public void checkCallingOrSelfPermission_shouldReturnPermissionDeniedForRemovedPermissions() throws Exception { shadowOf(contextWrapper).grantPermissions("foo", "bar"); shadowOf(contextWrapper).denyPermissions("foo", "qux"); assertThat(contextWrapper.checkCallingOrSelfPermission("foo")).isEqualTo(PERMISSION_DENIED); assertThat(contextWrapper.checkCallingOrSelfPermission("bar")).isEqualTo(PERMISSION_GRANTED); assertThat(contextWrapper.checkCallingOrSelfPermission("baz")).isEqualTo(PERMISSION_DENIED); assertThat(contextWrapper.checkCallingOrSelfPermission("qux")).isEqualTo(PERMISSION_DENIED); }
@Test public void checkPermissionUidPid() { assertThat(contextWrapper.checkPermission("MY_PERMISSON", 1, 1)) .isEqualTo(PackageManager.PERMISSION_DENIED); shadowContextWrapper.grantPermissions(1, 1, "MY_PERMISSON"); assertThat(contextWrapper.checkPermission("MY_PERMISSON", 2, 1)) .isEqualTo(PackageManager.PERMISSION_DENIED); assertThat(contextWrapper.checkPermission("MY_PERMISSON", 1, 1)) .isEqualTo(PackageManager.PERMISSION_GRANTED); }
/** * Returns the most recent {@code Intent} started by {@link * ContextWrapper#startActivity(android.content.Intent)} without consuming it. * * @return the most recently started {@code Intent} */ public Intent peekNextStartedActivity() { return getShadowInstrumentation().peekNextStartedActivity(); }
@Test public void checkCallingPermission_shouldReturnPermissionDeniedForRemovedPermissions() throws Exception { shadowOf(contextWrapper).grantPermissions("foo", "bar"); shadowOf(contextWrapper).denyPermissions("foo", "qux"); assertThat(contextWrapper.checkCallingPermission("foo")).isEqualTo(PERMISSION_DENIED); assertThat(contextWrapper.checkCallingPermission("bar")).isEqualTo(PERMISSION_GRANTED); assertThat(contextWrapper.checkCallingPermission("baz")).isEqualTo(PERMISSION_DENIED); assertThat(contextWrapper.checkCallingPermission("qux")).isEqualTo(PERMISSION_DENIED); }
@Test public void checkCallingPermissionsShouldReturnPermissionGrantedToAddedPermissions() throws Exception { shadowOf(contextWrapper).grantPermissions("foo", "bar"); assertThat(contextWrapper.checkCallingPermission("foo")).isEqualTo(PERMISSION_GRANTED); assertThat(contextWrapper.checkCallingPermission("bar")).isEqualTo(PERMISSION_GRANTED); assertThat(contextWrapper.checkCallingPermission("baz")).isEqualTo(PERMISSION_DENIED); }
/** * Clears all {@code Intent}s started by {@link * ContextWrapper#startActivity(android.content.Intent)}. */ public void clearNextStartedActivities() { getShadowInstrumentation().clearNextStartedActivities(); }
@Test public void readThrowsOnSubscribeWhenCannotStoreSecurely() { shadowContext.grantPermissions(USE_FINGERPRINT); when(fingerprintManager.isHardwareDetected()).thenReturn(true); when(fingerprintManager.hasEnrolledFingerprints()).thenReturn(true); Observable<ReadResult> read = whorlwind.read("a"); shadowContext.denyPermissions(USE_FINGERPRINT); try { read.blockingForEach(new Consumer<ReadResult>() { @Override public void accept(ReadResult readResult) throws Exception { fail(); } }); fail(); } catch (IllegalStateException expected) { assertThat(expected).hasMessage( "Can't store securely. Check canStoreSecurely() before attempting to read/write."); } verifyZeroInteractions(storage); }
@Test public void checkCallingOrSelfPermissionsShouldReturnPermissionGrantedToAddedPermissions() throws Exception { shadowOf(contextWrapper).grantPermissions("foo", "bar"); assertThat(contextWrapper.checkCallingOrSelfPermission("foo")).isEqualTo(PERMISSION_GRANTED); assertThat(contextWrapper.checkCallingOrSelfPermission("bar")).isEqualTo(PERMISSION_GRANTED); assertThat(contextWrapper.checkCallingOrSelfPermission("baz")).isEqualTo(PERMISSION_DENIED); }
/** * Consumes the {@code Intent} requested to stop a service by * {@link android.content.Context#stopService(android.content.Intent)} * from the bottom of the stack of stop requests. */ public Intent getNextStoppedService() { return getShadowInstrumentation().getNextStoppedService(); }
@Test public void cannotStoreSecurelyWithNoHardware() { shadowContext.grantPermissions(USE_FINGERPRINT); when(fingerprintManager.isHardwareDetected()).thenReturn(false); when(fingerprintManager.hasEnrolledFingerprints()).thenReturn(true); assertThat(whorlwind.canStoreSecurely()).isFalse(); verifyZeroInteractions(storage); }