From 798fdf3e19db90bf3908ceab18654ab60199d2d0 Mon Sep 17 00:00:00 2001 From: David Perez Date: Thu, 30 Nov 2023 09:00:32 -0600 Subject: [PATCH] Replace the generic Result class in the auth repo with specific result classes (#301) --- .../data/auth/repository/AuthRepository.kt | 7 +- .../auth/repository/AuthRepositoryImpl.kt | 30 ++++---- .../repository/model/DeleteAccountResult.kt | 16 +++++ .../model/PasswordStrengthResult.kt | 20 ++++++ .../createaccount/CreateAccountViewModel.kt | 31 ++++---- .../deleteaccount/DeleteAccountViewModel.kt | 16 +++-- .../auth/repository/AuthRepositoryTest.kt | 70 ++++++++++++++----- .../CreateAccountViewModelTest.kt | 31 +++++--- .../DeleteAccountViewModelTest.kt | 7 +- 9 files changed, 163 insertions(+), 65 deletions(-) create mode 100644 app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/DeleteAccountResult.kt create mode 100644 app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/PasswordStrengthResult.kt diff --git a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepository.kt b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepository.kt index 90c3ab608a..345a93a945 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepository.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepository.kt @@ -1,8 +1,9 @@ package com.x8bit.bitwarden.data.auth.repository -import com.x8bit.bitwarden.data.auth.datasource.sdk.model.PasswordStrength import com.x8bit.bitwarden.data.auth.repository.model.AuthState +import com.x8bit.bitwarden.data.auth.repository.model.DeleteAccountResult import com.x8bit.bitwarden.data.auth.repository.model.LoginResult +import com.x8bit.bitwarden.data.auth.repository.model.PasswordStrengthResult import com.x8bit.bitwarden.data.auth.repository.model.RegisterResult import com.x8bit.bitwarden.data.auth.repository.model.UserState import com.x8bit.bitwarden.data.auth.repository.util.CaptchaCallbackTokenResult @@ -38,7 +39,7 @@ interface AuthRepository : AuthenticatorProvider { /** * Attempt to delete the current account and logout them out upon success. */ - suspend fun deleteAccount(password: String): Result + suspend fun deleteAccount(password: String): DeleteAccountResult /** * Attempt to login with the given email and password. Updated access token will be reflected @@ -74,5 +75,5 @@ interface AuthRepository : AuthenticatorProvider { /** * Get the password strength for the given [email] and [password] combo. */ - suspend fun getPasswordStrength(email: String, password: String): Result + suspend fun getPasswordStrength(email: String, password: String): PasswordStrengthResult } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt index eca8ecb502..68ac7631b5 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt @@ -15,7 +15,9 @@ import com.x8bit.bitwarden.data.auth.datasource.sdk.AuthSdkSource import com.x8bit.bitwarden.data.auth.datasource.sdk.model.PasswordStrength import com.x8bit.bitwarden.data.auth.datasource.sdk.util.toKdfTypeJson import com.x8bit.bitwarden.data.auth.repository.model.AuthState +import com.x8bit.bitwarden.data.auth.repository.model.DeleteAccountResult import com.x8bit.bitwarden.data.auth.repository.model.LoginResult +import com.x8bit.bitwarden.data.auth.repository.model.PasswordStrengthResult import com.x8bit.bitwarden.data.auth.repository.model.RegisterResult import com.x8bit.bitwarden.data.auth.repository.model.UserState import com.x8bit.bitwarden.data.auth.repository.util.CaptchaCallbackTokenResult @@ -27,7 +29,6 @@ import com.x8bit.bitwarden.data.auth.util.toSdkParams import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository import com.x8bit.bitwarden.data.platform.util.asFailure -import com.x8bit.bitwarden.data.platform.util.asSuccess import com.x8bit.bitwarden.data.platform.util.flatMap import com.x8bit.bitwarden.data.vault.repository.VaultRepository import kotlinx.coroutines.CoroutineScope @@ -107,9 +108,9 @@ class AuthRepositoryImpl constructor( authDiskSource.rememberedEmailAddress = value } - override suspend fun deleteAccount(password: String): Result { + override suspend fun deleteAccount(password: String): DeleteAccountResult { val profile = authDiskSource.userState?.activeAccount?.profile - ?: return IllegalStateException("Not logged in.").asFailure() + ?: return DeleteAccountResult.Error return authSdkSource .hashPassword( email = profile.email, @@ -118,6 +119,10 @@ class AuthRepositoryImpl constructor( ) .flatMap { hashedPassword -> accountsService.deleteAccount(hashedPassword) } .onSuccess { logout() } + .fold( + onFailure = { DeleteAccountResult.Error }, + onSuccess = { DeleteAccountResult.Success }, + ) } override suspend fun login( @@ -322,17 +327,18 @@ class AuthRepositoryImpl constructor( override suspend fun getPasswordStrength( email: String, password: String, - ): Result { + ): PasswordStrengthResult { // TODO: Replace with SDK call (BIT-964) // Ex: return authSdkSource.passwordStrength(email, password) val length = password.length - return when { - length <= 3 -> PasswordStrength.LEVEL_0 - length <= 6 -> PasswordStrength.LEVEL_1 - length <= 9 -> PasswordStrength.LEVEL_2 - length <= 11 -> PasswordStrength.LEVEL_3 - else -> PasswordStrength.LEVEL_4 - } - .asSuccess() + return PasswordStrengthResult.Success( + passwordStrength = when { + length <= 3 -> PasswordStrength.LEVEL_0 + length <= 6 -> PasswordStrength.LEVEL_1 + length <= 9 -> PasswordStrength.LEVEL_2 + length <= 11 -> PasswordStrength.LEVEL_3 + else -> PasswordStrength.LEVEL_4 + }, + ) } } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/DeleteAccountResult.kt b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/DeleteAccountResult.kt new file mode 100644 index 0000000000..d885fc825f --- /dev/null +++ b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/DeleteAccountResult.kt @@ -0,0 +1,16 @@ +package com.x8bit.bitwarden.data.auth.repository.model + +/** + * Models result of deleting an account. + */ +sealed class DeleteAccountResult { + /** + * Delete succeeded. + */ + data object Success : DeleteAccountResult() + + /** + * There was an error deleting the account. + */ + data object Error : DeleteAccountResult() +} diff --git a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/PasswordStrengthResult.kt b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/PasswordStrengthResult.kt new file mode 100644 index 0000000000..2144242dc3 --- /dev/null +++ b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/PasswordStrengthResult.kt @@ -0,0 +1,20 @@ +package com.x8bit.bitwarden.data.auth.repository.model + +import com.x8bit.bitwarden.data.auth.datasource.sdk.model.PasswordStrength + +/** + * Models result of determining the strength of a password. + */ +sealed class PasswordStrengthResult { + /** + * The contains the password strength. + */ + data class Success( + val passwordStrength: PasswordStrength, + ) : PasswordStrengthResult() + + /** + * There was an error determining the password strength. + */ + data object Error : PasswordStrengthResult() +} diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountViewModel.kt index c5e9086805..ce95666457 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountViewModel.kt @@ -7,6 +7,7 @@ import androidx.lifecycle.viewModelScope import com.x8bit.bitwarden.R import com.x8bit.bitwarden.data.auth.datasource.sdk.model.PasswordStrength import com.x8bit.bitwarden.data.auth.repository.AuthRepository +import com.x8bit.bitwarden.data.auth.repository.model.PasswordStrengthResult import com.x8bit.bitwarden.data.auth.repository.model.RegisterResult import com.x8bit.bitwarden.data.auth.repository.util.CaptchaCallbackTokenResult import com.x8bit.bitwarden.data.auth.repository.util.generateUriForCaptcha @@ -111,18 +112,24 @@ class CreateAccountViewModel @Inject constructor( } private fun handlePasswordStrengthResult(action: ReceivePasswordStrengthResult) { - action.result.onSuccess { - val updatedState = when (it) { - PasswordStrength.LEVEL_0 -> PasswordStrengthState.WEAK_1 - PasswordStrength.LEVEL_1 -> PasswordStrengthState.WEAK_2 - PasswordStrength.LEVEL_2 -> PasswordStrengthState.WEAK_3 - PasswordStrength.LEVEL_3 -> PasswordStrengthState.GOOD - PasswordStrength.LEVEL_4 -> PasswordStrengthState.STRONG + when (val result = action.result) { + is PasswordStrengthResult.Success -> { + val updatedState = when (result.passwordStrength) { + PasswordStrength.LEVEL_0 -> PasswordStrengthState.WEAK_1 + PasswordStrength.LEVEL_1 -> PasswordStrengthState.WEAK_2 + PasswordStrength.LEVEL_2 -> PasswordStrengthState.WEAK_3 + PasswordStrength.LEVEL_3 -> PasswordStrengthState.GOOD + PasswordStrength.LEVEL_4 -> PasswordStrengthState.STRONG + } + mutableStateFlow.update { oldState -> + oldState.copy( + passwordStrengthState = updatedState, + ) + } } - mutableStateFlow.update { oldState -> - oldState.copy( - passwordStrengthState = updatedState, - ) + + PasswordStrengthResult.Error -> { + // TODO: Assess possible error conditions (BIT-964) } } } @@ -510,7 +517,7 @@ sealed class CreateAccountAction { * Indicates a password strength result has been received. */ data class ReceivePasswordStrengthResult( - val result: Result, + val result: PasswordStrengthResult, ) : Internal() } } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountViewModel.kt index 36d5d27c24..4d41dff977 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountViewModel.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope import com.x8bit.bitwarden.R import com.x8bit.bitwarden.data.auth.repository.AuthRepository +import com.x8bit.bitwarden.data.auth.repository.model.DeleteAccountResult import com.x8bit.bitwarden.ui.platform.base.BaseViewModel import com.x8bit.bitwarden.ui.platform.base.util.Text import com.x8bit.bitwarden.ui.platform.base.util.asText @@ -74,12 +75,13 @@ class DeleteAccountViewModel @Inject constructor( private fun handleDeleteAccountComplete( action: DeleteAccountAction.Internal.DeleteAccountComplete, ) { - action.result.fold( - onSuccess = { + when (action.result) { + DeleteAccountResult.Success -> { mutableStateFlow.update { it.copy(dialog = null) } // TODO: Display a dialog confirming account deletion (BIT-1184) - }, - onFailure = { + } + + DeleteAccountResult.Error -> { mutableStateFlow.update { it.copy( dialog = DeleteAccountState.DeleteAccountDialog.Error( @@ -87,8 +89,8 @@ class DeleteAccountViewModel @Inject constructor( ), ) } - }, - ) + } + } } } @@ -171,7 +173,7 @@ sealed class DeleteAccountAction { * Indicates that the delete account request has completed. */ data class DeleteAccountComplete( - val result: Result, + val result: DeleteAccountResult, ) : Internal() } } diff --git a/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryTest.kt index 075598d638..e8217fcaae 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryTest.kt @@ -25,7 +25,9 @@ import com.x8bit.bitwarden.data.auth.datasource.sdk.model.PasswordStrength.LEVEL import com.x8bit.bitwarden.data.auth.datasource.sdk.model.PasswordStrength.LEVEL_3 import com.x8bit.bitwarden.data.auth.datasource.sdk.model.PasswordStrength.LEVEL_4 import com.x8bit.bitwarden.data.auth.repository.model.AuthState +import com.x8bit.bitwarden.data.auth.repository.model.DeleteAccountResult import com.x8bit.bitwarden.data.auth.repository.model.LoginResult +import com.x8bit.bitwarden.data.auth.repository.model.PasswordStrengthResult import com.x8bit.bitwarden.data.auth.repository.model.RegisterResult import com.x8bit.bitwarden.data.auth.repository.util.CaptchaCallbackTokenResult import com.x8bit.bitwarden.data.auth.repository.util.toSdkParams @@ -187,7 +189,7 @@ class AuthRepositoryTest { fun `delete account fails if not logged in`() = runTest { val masterPassword = "hello world" val result = repository.deleteAccount(password = masterPassword) - assertTrue(result.isFailure) + assertEquals(DeleteAccountResult.Error, result) } @Test @@ -201,7 +203,7 @@ class AuthRepositoryTest { val result = repository.deleteAccount(password = masterPassword) - assertTrue(result.isFailure) + assertEquals(DeleteAccountResult.Error, result) coVerify { authSdkSource.hashPassword(EMAIL, masterPassword, kdf) } @@ -222,7 +224,7 @@ class AuthRepositoryTest { val result = repository.deleteAccount(password = masterPassword) - assertTrue(result.isFailure) + assertEquals(DeleteAccountResult.Error, result) coVerify { authSdkSource.hashPassword(EMAIL, masterPassword, kdf) accountsService.deleteAccount(hashedMasterPassword) @@ -244,7 +246,7 @@ class AuthRepositoryTest { val result = repository.deleteAccount(password = masterPassword) - assertTrue(result.isSuccess) + assertEquals(DeleteAccountResult.Success, result) coVerify { authSdkSource.hashPassword(EMAIL, masterPassword, kdf) accountsService.deleteAccount(hashedMasterPassword) @@ -962,22 +964,58 @@ class AuthRepositoryTest { @Test fun `getPasswordStrength should be based on password length`() = runTest { // TODO: Replace with SDK call (BIT-964) - assertEquals(LEVEL_0.asSuccess(), repository.getPasswordStrength(EMAIL, "1")) - assertEquals(LEVEL_0.asSuccess(), repository.getPasswordStrength(EMAIL, "12")) - assertEquals(LEVEL_0.asSuccess(), repository.getPasswordStrength(EMAIL, "123")) + assertEquals( + PasswordStrengthResult.Success(LEVEL_0), + repository.getPasswordStrength(EMAIL, "1"), + ) + assertEquals( + PasswordStrengthResult.Success(LEVEL_0), + repository.getPasswordStrength(EMAIL, "12"), + ) + assertEquals( + PasswordStrengthResult.Success(LEVEL_0), + repository.getPasswordStrength(EMAIL, "123"), + ) - assertEquals(LEVEL_1.asSuccess(), repository.getPasswordStrength(EMAIL, "1234")) - assertEquals(LEVEL_1.asSuccess(), repository.getPasswordStrength(EMAIL, "12345")) - assertEquals(LEVEL_1.asSuccess(), repository.getPasswordStrength(EMAIL, "123456")) + assertEquals( + PasswordStrengthResult.Success(LEVEL_1), + repository.getPasswordStrength(EMAIL, "1234"), + ) + assertEquals( + PasswordStrengthResult.Success(LEVEL_1), + repository.getPasswordStrength(EMAIL, "12345"), + ) + assertEquals( + PasswordStrengthResult.Success(LEVEL_1), + repository.getPasswordStrength(EMAIL, "123456"), + ) - assertEquals(LEVEL_2.asSuccess(), repository.getPasswordStrength(EMAIL, "1234567")) - assertEquals(LEVEL_2.asSuccess(), repository.getPasswordStrength(EMAIL, "12345678")) - assertEquals(LEVEL_2.asSuccess(), repository.getPasswordStrength(EMAIL, "123456789")) + assertEquals( + PasswordStrengthResult.Success(LEVEL_2), + repository.getPasswordStrength(EMAIL, "1234567"), + ) + assertEquals( + PasswordStrengthResult.Success(LEVEL_2), + repository.getPasswordStrength(EMAIL, "12345678"), + ) + assertEquals( + PasswordStrengthResult.Success(LEVEL_2), + repository.getPasswordStrength(EMAIL, "123456789"), + ) - assertEquals(LEVEL_3.asSuccess(), repository.getPasswordStrength(EMAIL, "123456789a")) - assertEquals(LEVEL_3.asSuccess(), repository.getPasswordStrength(EMAIL, "123456789ab")) + assertEquals( + PasswordStrengthResult.Success(LEVEL_3), + repository.getPasswordStrength(EMAIL, "123456789a"), + ) + assertEquals( + PasswordStrengthResult.Success(LEVEL_3), + repository.getPasswordStrength(EMAIL, "123456789ab"), + ) - assertEquals(LEVEL_4.asSuccess(), repository.getPasswordStrength(EMAIL, "123456789abc")) + assertEquals( + PasswordStrengthResult.Success(LEVEL_4), + repository.getPasswordStrength(EMAIL, "123456789abc"), + ) } companion object { diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountViewModelTest.kt index fed0ddf689..5c449aa666 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/createaccount/CreateAccountViewModelTest.kt @@ -11,10 +11,9 @@ import com.x8bit.bitwarden.data.auth.datasource.sdk.model.PasswordStrength.LEVEL import com.x8bit.bitwarden.data.auth.datasource.sdk.model.PasswordStrength.LEVEL_3 import com.x8bit.bitwarden.data.auth.datasource.sdk.model.PasswordStrength.LEVEL_4 import com.x8bit.bitwarden.data.auth.repository.AuthRepository +import com.x8bit.bitwarden.data.auth.repository.model.PasswordStrengthResult import com.x8bit.bitwarden.data.auth.repository.model.RegisterResult import com.x8bit.bitwarden.data.auth.repository.util.generateUriForCaptcha -import com.x8bit.bitwarden.data.platform.util.asFailure -import com.x8bit.bitwarden.data.platform.util.asSuccess import com.x8bit.bitwarden.ui.auth.feature.createaccount.CreateAccountAction.AcceptPoliciesToggle import com.x8bit.bitwarden.ui.auth.feature.createaccount.CreateAccountAction.CloseClick import com.x8bit.bitwarden.ui.auth.feature.createaccount.CreateAccountAction.ConfirmPasswordInputChange @@ -141,7 +140,7 @@ class CreateAccountViewModelTest : BaseViewModelTest() { val input = "abcdefghikl" coEvery { mockAuthRepository.getPasswordStrength("test@test.com", input) - } returns Throwable().asFailure() + } returns PasswordStrengthResult.Error val viewModel = CreateAccountViewModel( savedStateHandle = SavedStateHandle(), authRepository = mockAuthRepository, @@ -169,7 +168,7 @@ class CreateAccountViewModelTest : BaseViewModelTest() { val input = "testtesttesttest" coEvery { mockAuthRepository.getPasswordStrength("test@test.com", input) - } returns Throwable().asFailure() + } returns PasswordStrengthResult.Error val viewModel = CreateAccountViewModel( savedStateHandle = SavedStateHandle(), authRepository = mockAuthRepository, @@ -197,7 +196,7 @@ class CreateAccountViewModelTest : BaseViewModelTest() { val password = "testtesttesttest" coEvery { mockAuthRepository.getPasswordStrength("test@test.com", password) - } returns Throwable().asFailure() + } returns PasswordStrengthResult.Error val viewModel = CreateAccountViewModel( savedStateHandle = SavedStateHandle(), authRepository = mockAuthRepository, @@ -504,7 +503,7 @@ class CreateAccountViewModelTest : BaseViewModelTest() { fun `PasswordInputChange update passwordInput and call getPasswordStrength`() = runTest { coEvery { mockAuthRepository.getPasswordStrength("", "input") - } returns Result.failure(Throwable()) + } returns PasswordStrengthResult.Error val viewModel = CreateAccountViewModel( savedStateHandle = SavedStateHandle(), authRepository = mockAuthRepository, @@ -554,7 +553,9 @@ class CreateAccountViewModelTest : BaseViewModelTest() { awaitItem(), ) - viewModel.trySendAction(ReceivePasswordStrengthResult(LEVEL_0.asSuccess())) + viewModel.trySendAction( + ReceivePasswordStrengthResult(PasswordStrengthResult.Success(LEVEL_0)), + ) assertEquals( DEFAULT_STATE.copy( passwordStrengthState = PasswordStrengthState.WEAK_1, @@ -562,7 +563,9 @@ class CreateAccountViewModelTest : BaseViewModelTest() { awaitItem(), ) - viewModel.trySendAction(ReceivePasswordStrengthResult(LEVEL_1.asSuccess())) + viewModel.trySendAction( + ReceivePasswordStrengthResult(PasswordStrengthResult.Success(LEVEL_1)), + ) assertEquals( DEFAULT_STATE.copy( passwordStrengthState = PasswordStrengthState.WEAK_2, @@ -570,7 +573,9 @@ class CreateAccountViewModelTest : BaseViewModelTest() { awaitItem(), ) - viewModel.trySendAction(ReceivePasswordStrengthResult(LEVEL_2.asSuccess())) + viewModel.trySendAction( + ReceivePasswordStrengthResult(PasswordStrengthResult.Success(LEVEL_2)), + ) assertEquals( DEFAULT_STATE.copy( passwordStrengthState = PasswordStrengthState.WEAK_3, @@ -578,7 +583,9 @@ class CreateAccountViewModelTest : BaseViewModelTest() { awaitItem(), ) - viewModel.trySendAction(ReceivePasswordStrengthResult(LEVEL_3.asSuccess())) + viewModel.trySendAction( + ReceivePasswordStrengthResult(PasswordStrengthResult.Success(LEVEL_3)), + ) assertEquals( DEFAULT_STATE.copy( passwordStrengthState = PasswordStrengthState.GOOD, @@ -586,7 +593,9 @@ class CreateAccountViewModelTest : BaseViewModelTest() { awaitItem(), ) - viewModel.trySendAction(ReceivePasswordStrengthResult(LEVEL_4.asSuccess())) + viewModel.trySendAction( + ReceivePasswordStrengthResult(PasswordStrengthResult.Success(LEVEL_4)), + ) assertEquals( DEFAULT_STATE.copy( passwordStrengthState = PasswordStrengthState.STRONG, diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountViewModelTest.kt index 1da3786cd2..89d56b2ad4 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/deleteaccount/DeleteAccountViewModelTest.kt @@ -4,8 +4,7 @@ import androidx.lifecycle.SavedStateHandle import app.cash.turbine.test import com.x8bit.bitwarden.R import com.x8bit.bitwarden.data.auth.repository.AuthRepository -import com.x8bit.bitwarden.data.platform.util.asFailure -import com.x8bit.bitwarden.data.platform.util.asSuccess +import com.x8bit.bitwarden.data.auth.repository.model.DeleteAccountResult import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest import com.x8bit.bitwarden.ui.platform.base.util.asText import io.mockk.coEvery @@ -56,7 +55,7 @@ class DeleteAccountViewModelTest : BaseViewModelTest() { fun `on DeleteAccountClick should make the delete call`() = runTest { val viewModel = createViewModel() val masterPassword = "ckasb kcs ja" - coEvery { authRepo.deleteAccount(masterPassword) } returns Unit.asSuccess() + coEvery { authRepo.deleteAccount(masterPassword) } returns DeleteAccountResult.Success viewModel.trySendAction(DeleteAccountAction.DeleteAccountClick(masterPassword)) @@ -70,7 +69,7 @@ class DeleteAccountViewModelTest : BaseViewModelTest() { fun `on DeleteAccountClick should update dialog state`() = runTest { val viewModel = createViewModel() val masterPassword = "ckasb kcs ja" - coEvery { authRepo.deleteAccount(masterPassword) } returns Throwable("Fail").asFailure() + coEvery { authRepo.deleteAccount(masterPassword) } returns DeleteAccountResult.Error viewModel.trySendAction(DeleteAccountAction.DeleteAccountClick(masterPassword))