From 475a82e0fb43420ad9fc5750e0247946ca951be5 Mon Sep 17 00:00:00 2001 From: Dave Severns <149429124+dseverns-livefront@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:08:11 -0400 Subject: [PATCH] PM-19335 add throwable val to generator error results (#4894) --- .../repository/GeneratorRepositoryImpl.kt | 12 ++++----- .../model/GeneratedCatchAllUsernameResult.kt | 2 +- ...GeneratedForwardedServiceUsernameResult.kt | 5 +++- .../model/GeneratedPassphraseResult.kt | 2 +- .../model/GeneratedPasswordResult.kt | 2 +- .../GeneratedPlusAddressedUsernameResult.kt | 2 +- .../GeneratedRandomWordUsernameResult.kt | 2 +- .../MasterPasswordGeneratorViewModel.kt | 2 +- .../feature/generator/GeneratorViewModel.kt | 10 ++++---- .../repository/GeneratorRepositoryTest.kt | 25 ++++++++++++++----- .../MasterPasswordGeneratorViewModelTest.kt | 4 +-- .../generator/GeneratorViewModelTest.kt | 4 +-- 12 files changed, 44 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/GeneratorRepositoryImpl.kt b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/GeneratorRepositoryImpl.kt index 1b617ca3b3..c17981adbd 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/GeneratorRepositoryImpl.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/GeneratorRepositoryImpl.kt @@ -130,7 +130,7 @@ class GeneratorRepositoryImpl( } GeneratedPasswordResult.Success(generatedPassword) }, - onFailure = { GeneratedPasswordResult.InvalidRequest }, + onFailure = { GeneratedPasswordResult.InvalidRequest(error = it) }, ) override suspend fun generatePassphrase( @@ -149,7 +149,7 @@ class GeneratorRepositoryImpl( } GeneratedPassphraseResult.Success(generatedPassphrase) }, - onFailure = { GeneratedPassphraseResult.InvalidRequest }, + onFailure = { GeneratedPassphraseResult.InvalidRequest(error = it) }, ) override suspend fun generatePlusAddressedEmail( @@ -161,7 +161,7 @@ class GeneratorRepositoryImpl( GeneratedPlusAddressedUsernameResult.Success(generatedEmail) }, onFailure = { - GeneratedPlusAddressedUsernameResult.InvalidRequest + GeneratedPlusAddressedUsernameResult.InvalidRequest(error = it) }, ) @@ -174,7 +174,7 @@ class GeneratorRepositoryImpl( GeneratedCatchAllUsernameResult.Success(generatedEmail) }, onFailure = { - GeneratedCatchAllUsernameResult.InvalidRequest + GeneratedCatchAllUsernameResult.InvalidRequest(error = it) }, ) @@ -187,7 +187,7 @@ class GeneratorRepositoryImpl( GeneratedRandomWordUsernameResult.Success(generatedUsername) }, onFailure = { - GeneratedRandomWordUsernameResult.InvalidRequest + GeneratedRandomWordUsernameResult.InvalidRequest(error = it) }, ) @@ -200,7 +200,7 @@ class GeneratorRepositoryImpl( GeneratedForwardedServiceUsernameResult.Success(generatedEmail) }, onFailure = { - GeneratedForwardedServiceUsernameResult.InvalidRequest(it.message) + GeneratedForwardedServiceUsernameResult.InvalidRequest(it.message, error = it) }, ) } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedCatchAllUsernameResult.kt b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedCatchAllUsernameResult.kt index 778734ba2d..15e5d9c508 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedCatchAllUsernameResult.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedCatchAllUsernameResult.kt @@ -15,5 +15,5 @@ sealed class GeneratedCatchAllUsernameResult { /** * There was an error during the operation. */ - data object InvalidRequest : GeneratedCatchAllUsernameResult() + data class InvalidRequest(val error: Throwable) : GeneratedCatchAllUsernameResult() } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedForwardedServiceUsernameResult.kt b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedForwardedServiceUsernameResult.kt index 46a67f87d4..0e7c55173d 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedForwardedServiceUsernameResult.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedForwardedServiceUsernameResult.kt @@ -14,5 +14,8 @@ sealed class GeneratedForwardedServiceUsernameResult { /** * There was an error during the operation. */ - data class InvalidRequest(val message: String?) : GeneratedForwardedServiceUsernameResult() + data class InvalidRequest( + val message: String?, + val error: Throwable, + ) : GeneratedForwardedServiceUsernameResult() } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPassphraseResult.kt b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPassphraseResult.kt index 7bf3d63cbe..62e2611c4f 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPassphraseResult.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPassphraseResult.kt @@ -12,5 +12,5 @@ sealed class GeneratedPassphraseResult { /** * There was an error during the operation. */ - data object InvalidRequest : GeneratedPassphraseResult() + data class InvalidRequest(val error: Throwable) : GeneratedPassphraseResult() } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPasswordResult.kt b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPasswordResult.kt index bbde330543..9692a2d3fe 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPasswordResult.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPasswordResult.kt @@ -13,5 +13,5 @@ sealed class GeneratedPasswordResult { /** * There was an error during the operation. */ - data object InvalidRequest : GeneratedPasswordResult() + data class InvalidRequest(val error: Throwable) : GeneratedPasswordResult() } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPlusAddressedUsernameResult.kt b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPlusAddressedUsernameResult.kt index c2cfe5f720..fa252f8dbb 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPlusAddressedUsernameResult.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedPlusAddressedUsernameResult.kt @@ -14,5 +14,5 @@ sealed class GeneratedPlusAddressedUsernameResult { /** * There was an error during the operation. */ - data object InvalidRequest : GeneratedPlusAddressedUsernameResult() + data class InvalidRequest(val error: Throwable) : GeneratedPlusAddressedUsernameResult() } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedRandomWordUsernameResult.kt b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedRandomWordUsernameResult.kt index fb156b7d48..5581be976e 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedRandomWordUsernameResult.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/tools/generator/repository/model/GeneratedRandomWordUsernameResult.kt @@ -15,5 +15,5 @@ sealed class GeneratedRandomWordUsernameResult { /** * There was an error during the operation. */ - data object InvalidRequest : GeneratedRandomWordUsernameResult() + data class InvalidRequest(val error: Throwable) : GeneratedRandomWordUsernameResult() } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/masterpasswordgenerator/MasterPasswordGeneratorViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/masterpasswordgenerator/MasterPasswordGeneratorViewModel.kt index 7a08d99f43..727223b2be 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/masterpasswordgenerator/MasterPasswordGeneratorViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/masterpasswordgenerator/MasterPasswordGeneratorViewModel.kt @@ -91,7 +91,7 @@ class MasterPasswordGeneratorViewModel @Inject constructor( private fun handleUpdatedPassphraseResult(passphraseResult: GeneratedPassphraseResult) { when (passphraseResult) { - GeneratedPassphraseResult.InvalidRequest -> { + is GeneratedPassphraseResult.InvalidRequest -> { sendEvent( MasterPasswordGeneratorEvent.ShowSnackbar( R.string.an_error_has_occurred.asText(), diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModel.kt index 2b72378b59..8cde96c2c3 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModel.kt @@ -736,7 +736,7 @@ class GeneratorViewModel @Inject constructor( } } - GeneratedPasswordResult.InvalidRequest -> { + is GeneratedPasswordResult.InvalidRequest -> { sendEvent(GeneratorEvent.ShowSnackbar(R.string.an_error_has_occurred.asText())) } } @@ -752,7 +752,7 @@ class GeneratorViewModel @Inject constructor( } } - GeneratedPassphraseResult.InvalidRequest -> { + is GeneratedPassphraseResult.InvalidRequest -> { sendEvent(GeneratorEvent.ShowSnackbar(R.string.an_error_has_occurred.asText())) } } @@ -768,7 +768,7 @@ class GeneratorViewModel @Inject constructor( } } - GeneratedPlusAddressedUsernameResult.InvalidRequest -> { + is GeneratedPlusAddressedUsernameResult.InvalidRequest -> { sendEvent(GeneratorEvent.ShowSnackbar(R.string.an_error_has_occurred.asText())) } } @@ -784,7 +784,7 @@ class GeneratorViewModel @Inject constructor( } } - GeneratedCatchAllUsernameResult.InvalidRequest -> { + is GeneratedCatchAllUsernameResult.InvalidRequest -> { sendEvent(GeneratorEvent.ShowSnackbar(R.string.an_error_has_occurred.asText())) } } @@ -800,7 +800,7 @@ class GeneratorViewModel @Inject constructor( } } - GeneratedRandomWordUsernameResult.InvalidRequest -> { + is GeneratedRandomWordUsernameResult.InvalidRequest -> { sendEvent(GeneratorEvent.ShowSnackbar(R.string.an_error_has_occurred.asText())) } } diff --git a/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/repository/GeneratorRepositoryTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/repository/GeneratorRepositoryTest.kt index e8ea2a14be..15000f0336 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/repository/GeneratorRepositoryTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/repository/GeneratorRepositoryTest.kt @@ -199,7 +199,9 @@ class GeneratorRepositoryTest { val result = repository.generatePassword(request, true) - assertEquals(GeneratedPasswordResult.InvalidRequest, result) + assertEquals( + GeneratedPasswordResult.InvalidRequest(error = exception), result, + ) coVerify { generatorSdkSource.generatePassword(request) } } @@ -257,7 +259,9 @@ class GeneratorRepositoryTest { val result = repository.generatePassphrase(request) - assertEquals(GeneratedPassphraseResult.InvalidRequest, result) + assertEquals( + GeneratedPassphraseResult.InvalidRequest(error = exception), result, + ) coVerify { generatorSdkSource.generatePassphrase(request) } } @@ -296,7 +300,9 @@ class GeneratorRepositoryTest { val result = repository.generatePlusAddressedEmail(request) - assertEquals(GeneratedPlusAddressedUsernameResult.InvalidRequest, result) + assertEquals( + GeneratedPlusAddressedUsernameResult.InvalidRequest(error = exception), result, + ) coVerify { generatorSdkSource.generatePlusAddressedEmail(request) } } @@ -331,7 +337,9 @@ class GeneratorRepositoryTest { val result = repository.generateCatchAllEmail(request) - assertEquals(GeneratedCatchAllUsernameResult.InvalidRequest, result) + assertEquals( + GeneratedCatchAllUsernameResult.InvalidRequest(error = exception), result, + ) coVerify { generatorSdkSource.generateCatchAllEmail(request) } } @@ -366,7 +374,9 @@ class GeneratorRepositoryTest { val result = repository.generateRandomWordUsername(request) - assertEquals(GeneratedRandomWordUsernameResult.InvalidRequest, result) + assertEquals( + GeneratedRandomWordUsernameResult.InvalidRequest(error = exception), result, + ) coVerify { generatorSdkSource.generateRandomWord(request) } } @@ -409,7 +419,10 @@ class GeneratorRepositoryTest { val result = repository.generateForwardedServiceUsername(request) assertEquals( - GeneratedForwardedServiceUsernameResult.InvalidRequest(exception.message), + GeneratedForwardedServiceUsernameResult.InvalidRequest( + message = exception.message, + error = exception, + ), result, ) coVerify { generatorSdkSource.generateForwardedServiceEmail(request) } diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/masterpasswordgenerator/MasterPasswordGeneratorViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/masterpasswordgenerator/MasterPasswordGeneratorViewModelTest.kt index da65620451..781f5e1b7a 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/masterpasswordgenerator/MasterPasswordGeneratorViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/masterpasswordgenerator/MasterPasswordGeneratorViewModelTest.kt @@ -37,7 +37,7 @@ class MasterPasswordGeneratorViewModelTest : BaseViewModelTest() { @Suppress("MaxLineLength") fun `With no saved state and failed generator result, initial password state is default value`() { fakeGeneratorRepository.setMockGeneratePassphraseResult( - result = GeneratedPassphraseResult.InvalidRequest, + result = GeneratedPassphraseResult.InvalidRequest(error = Throwable("Fail")), ) val viewModel = createViewModel() @@ -91,7 +91,7 @@ class MasterPasswordGeneratorViewModelTest : BaseViewModelTest() { val viewModel = createViewModel() fakeGeneratorRepository.setMockGeneratePassphraseResult( - GeneratedPassphraseResult.InvalidRequest, + GeneratedPassphraseResult.InvalidRequest(error = Throwable("Fail")), ) viewModel.eventFlow.test { diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModelTest.kt index e91980ed29..1207accb6f 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModelTest.kt @@ -403,7 +403,7 @@ class GeneratorViewModelTest : BaseViewModelTest() { val viewModel = createViewModel() fakeGeneratorRepository.setMockGeneratePasswordResult( - GeneratedPasswordResult.InvalidRequest, + GeneratedPasswordResult.InvalidRequest(error = Throwable("Fail")), ) viewModel.trySendAction(GeneratorAction.RegenerateClick) @@ -465,7 +465,7 @@ class GeneratorViewModelTest : BaseViewModelTest() { val viewModel = createViewModel(initialPassphraseState) fakeGeneratorRepository.setMockGeneratePassphraseResult( - GeneratedPassphraseResult.InvalidRequest, + GeneratedPassphraseResult.InvalidRequest(error = Throwable("Fail")), ) viewModel.trySendAction(GeneratorAction.RegenerateClick)