diff --git a/service/src/main/java/app/notesr/service/lifecycle/AppCloseAndroidService.java b/service/src/main/java/app/notesr/service/lifecycle/AppCloseAndroidService.java index 68948ae6..30907179 100644 --- a/service/src/main/java/app/notesr/service/lifecycle/AppCloseAndroidService.java +++ b/service/src/main/java/app/notesr/service/lifecycle/AppCloseAndroidService.java @@ -17,7 +17,7 @@ import androidx.annotation.Nullable; import androidx.core.app.NotificationCompat; -import app.notesr.core.security.crypto.CryptoManager; +import app.notesr.core.security.SecretCache; import app.notesr.core.security.crypto.CryptoManagerProvider; import app.notesr.data.DatabaseProvider; import app.notesr.service.AndroidService; @@ -81,6 +81,7 @@ protected AndroidServiceEntry getEntry(String payload, String state) { @Override public void onTaskRemoved(Intent rootIntent) { if (getOtherRunningServicesCount() == 0) { + clearSecretCache(); closeDatabase(); destroySecrets(); @@ -116,6 +117,10 @@ long getOtherRunningServicesCount() { .count(); } + void clearSecretCache() { + SecretCache.clear(); + } + void closeDatabase() { DatabaseProvider.close(); } diff --git a/service/src/test/java/app/notesr/service/lifecycle/AppCloseAndroidServiceTest.java b/service/src/test/java/app/notesr/service/lifecycle/AppCloseAndroidServiceTest.java index 86d68379..6ca161cc 100644 --- a/service/src/test/java/app/notesr/service/lifecycle/AppCloseAndroidServiceTest.java +++ b/service/src/test/java/app/notesr/service/lifecycle/AppCloseAndroidServiceTest.java @@ -33,6 +33,7 @@ void setUp() { @Test void testOnTaskRemovedWhenNoOtherServicesRunningClosesEverythingAndExits() { doReturn(0L).when(service).getOtherRunningServicesCount(); + doNothing().when(service).clearSecretCache(); doNothing().when(service).closeDatabase(); doNothing().when(service).destroySecrets(); doNothing().when(service).stopForegroundService(); @@ -44,6 +45,9 @@ void testOnTaskRemovedWhenNoOtherServicesRunningClosesEverythingAndExits() { service.onTaskRemoved(intent); + verify(service, description("Secret cache should be cleared" + + " when no other services are running")) + .clearSecretCache(); verify(service, description("Database should be closed" + " when no other services are running")) .closeDatabase(); @@ -74,6 +78,9 @@ void testOnTaskRemovedWhenOtherServicesRunningOnlyStopsSelf() { service.onTaskRemoved(intent); + verify(service, never().description("Secret cache should NOT be cleared" + + " when other services are running")) + .clearSecretCache(); verify(service, never().description("Database should NOT be closed" + " when other services are running")) .closeDatabase();