From 335f31ff61b496a00bf1975be2324420179e9752 Mon Sep 17 00:00:00 2001 From: zHd4 <38856321+zHd4@users.noreply.github.com> Date: Fri, 17 Jul 2026 12:21:18 +0200 Subject: [PATCH 1/2] Handle IllegalArgumentException in CbcToGcmKeyMigration --- .../migration/changes/security/crypto/CbcToGcmKeyMigration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/src/main/java/app/notesr/service/migration/changes/security/crypto/CbcToGcmKeyMigration.java b/service/src/main/java/app/notesr/service/migration/changes/security/crypto/CbcToGcmKeyMigration.java index dc877799..6e24336c 100644 --- a/service/src/main/java/app/notesr/service/migration/changes/security/crypto/CbcToGcmKeyMigration.java +++ b/service/src/main/java/app/notesr/service/migration/changes/security/crypto/CbcToGcmKeyMigration.java @@ -33,7 +33,7 @@ public void migrate(Context context) { cryptoManager.setSecrets(context, secrets); secrets.destroy(); - } catch (EncryptionFailedException e) { + } catch (EncryptionFailedException | IllegalArgumentException e) { throw new AppMigrationException("Failed to migrate key", e); } } From 8148339b57b65bbbb069f3c6eaf9f17b63096ad7 Mon Sep 17 00:00:00 2001 From: zHd4 <38856321+zHd4@users.noreply.github.com> Date: Fri, 17 Jul 2026 12:21:45 +0200 Subject: [PATCH 2/2] Add test for secrets validation failure in CbcToGcmKeyMigrationTest --- .../crypto/CbcToGcmKeyMigrationTest.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/service/src/test/java/app/notesr/service/migration/changes/security/crypto/CbcToGcmKeyMigrationTest.java b/service/src/test/java/app/notesr/service/migration/changes/security/crypto/CbcToGcmKeyMigrationTest.java index 9515f367..9b0016f9 100644 --- a/service/src/test/java/app/notesr/service/migration/changes/security/crypto/CbcToGcmKeyMigrationTest.java +++ b/service/src/test/java/app/notesr/service/migration/changes/security/crypto/CbcToGcmKeyMigrationTest.java @@ -5,6 +5,15 @@ package app.notesr.service.migration.changes.security.crypto; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + import android.content.Context; import app.notesr.core.security.exception.EncryptionFailedException; import app.notesr.service.migration.AppMigrationException; @@ -17,8 +26,6 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) class CbcToGcmKeyMigrationTest { @@ -65,4 +72,17 @@ void testMigrateWhenEncryptionFailsThrowsAppMigrationException() assertEquals("Failed to migrate key", exception.getMessage()); } + + @Test + void testMigrateWhenSecretsValidationFailsThrowsAppMigrationException() + throws EncryptionFailedException { + doThrow(new IllegalArgumentException()).when(cryptoManager).setSecrets(any(), any()); + + AppMigrationException exception = assertThrows( + AppMigrationException.class, + () -> migration.migrate(context) + ); + + assertEquals("Failed to migrate key", exception.getMessage()); + } }