@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 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 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 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 cannotStoreSecurelyWithNoPermission() { shadowContext.denyPermissions(USE_FINGERPRINT); when(fingerprintManager.isHardwareDetected()).thenReturn(true); when(fingerprintManager.hasEnrolledFingerprints()).thenReturn(true); assertThat(whorlwind.canStoreSecurely()).isFalse(); verifyZeroInteractions(storage); }
@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); }
@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); }