diff --git a/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/di/VaultNetworkModule.kt b/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/di/VaultNetworkModule.kt index f2a3175b2..f7054c4fa 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/di/VaultNetworkModule.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/di/VaultNetworkModule.kt @@ -1,10 +1,10 @@ package com.x8bit.bitwarden.data.vault.datasource.network.di -import com.x8bit.bitwarden.data.vault.datasource.network.service.SyncService -import com.x8bit.bitwarden.data.vault.datasource.network.service.SyncServiceImpl import com.x8bit.bitwarden.data.platform.datasource.network.retrofit.Retrofits import com.x8bit.bitwarden.data.vault.datasource.network.service.CiphersService import com.x8bit.bitwarden.data.vault.datasource.network.service.CiphersServiceImpl +import com.x8bit.bitwarden.data.vault.datasource.network.service.SyncService +import com.x8bit.bitwarden.data.vault.datasource.network.service.SyncServiceImpl import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/auth/AuthNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/auth/AuthNavigation.kt index b6d64e058..e101bfe4d 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/auth/AuthNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/auth/AuthNavigation.kt @@ -8,12 +8,12 @@ import androidx.navigation.navOptions import androidx.navigation.navigation import com.x8bit.bitwarden.ui.auth.feature.createaccount.createAccountDestinations import com.x8bit.bitwarden.ui.auth.feature.createaccount.navigateToCreateAccount +import com.x8bit.bitwarden.ui.auth.feature.environment.environmentDestination +import com.x8bit.bitwarden.ui.auth.feature.environment.navigateToEnvironment import com.x8bit.bitwarden.ui.auth.feature.landing.LANDING_ROUTE import com.x8bit.bitwarden.ui.auth.feature.landing.landingDestinations import com.x8bit.bitwarden.ui.auth.feature.login.loginDestinations import com.x8bit.bitwarden.ui.auth.feature.login.navigateToLogin -import com.x8bit.bitwarden.ui.auth.feature.environment.navigateToEnvironment -import com.x8bit.bitwarden.ui.auth.feature.environment.environmentDestination const val AUTH_GRAPH_ROUTE: String = "auth_graph" diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/components/BitwardenSelectionDialog.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/components/BitwardenSelectionDialog.kt index 61c65d903..11e1908f2 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/components/BitwardenSelectionDialog.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/components/BitwardenSelectionDialog.kt @@ -19,7 +19,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import com.x8bit.bitwarden.R -import com.x8bit.bitwarden.ui.platform.base.util.Text /** * Displays a dialog with a title and "Cancel" button. diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreen.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreen.kt index 715d44a5d..9fc4f9b16 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreen.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreen.kt @@ -31,9 +31,9 @@ import com.x8bit.bitwarden.R import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect import com.x8bit.bitwarden.ui.platform.base.util.IntentHandler import com.x8bit.bitwarden.ui.platform.base.util.Text -import com.x8bit.bitwarden.ui.platform.components.BitwardenLogoutConfirmationDialog import com.x8bit.bitwarden.ui.platform.components.BitwardenExternalLinkRow import com.x8bit.bitwarden.ui.platform.components.BitwardenListHeaderText +import com.x8bit.bitwarden.ui.platform.components.BitwardenLogoutConfirmationDialog import com.x8bit.bitwarden.ui.platform.components.BitwardenScaffold import com.x8bit.bitwarden.ui.platform.components.BitwardenSelectionDialog import com.x8bit.bitwarden.ui.platform.components.BitwardenSelectionRow 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 dc40d7c84..4219dcc51 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 @@ -64,6 +64,7 @@ class GeneratorViewModel @Inject constructor( } } + @Suppress("MaxLineLength") override fun handleAction(action: GeneratorAction) { when (action) { is GeneratorAction.RegenerateClick -> { @@ -102,8 +103,7 @@ class GeneratorViewModel @Inject constructor( handleUsernameTypeOptionSelect(action) } - is GeneratorAction.MainType.Username.UsernameType.PlusAddressedEmail.EmailTextChange -> - { + is GeneratorAction.MainType.Username.UsernameType.PlusAddressedEmail.EmailTextChange -> { handlePlusAddressedEmailTextInputChange(action) } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultGroupListItem.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultGroupListItem.kt index a2ff3562e..406ce863c 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultGroupListItem.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultGroupListItem.kt @@ -15,9 +15,9 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.res.painterResource -import com.x8bit.bitwarden.R import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import com.x8bit.bitwarden.R import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme /** diff --git a/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/datasource/disk/GeneratorDiskSourceTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/datasource/disk/GeneratorDiskSourceTest.kt index 539721a3f..8dcfc2b8f 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/datasource/disk/GeneratorDiskSourceTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/datasource/disk/GeneratorDiskSourceTest.kt @@ -1,7 +1,7 @@ package com.x8bit.bitwarden.data.tools.generator.datasource.disk -import com.x8bit.bitwarden.data.tools.generator.repository.model.PasscodeGenerationOptions import com.x8bit.bitwarden.data.platform.base.FakeSharedPreferences +import com.x8bit.bitwarden.data.tools.generator.repository.model.PasscodeGenerationOptions import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json 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 9c638eebe..3bea4c1c2 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 @@ -176,18 +176,18 @@ class GeneratorRepositoryTest { coVerify(exactly = 0) { generatorDiskSource.getPasscodeGenerationOptions(any()) } } - @Suppress("MaxLineLength") @Test - fun `getPasscodeGenerationOptions should return null when no data is stored for active user`() = runTest { - val userId = "activeUserId" - coEvery { authDiskSource.userState } returns USER_STATE - coEvery { generatorDiskSource.getPasscodeGenerationOptions(userId) } returns null + fun `getPasscodeGenerationOptions should return null when no data is stored for active user`() = + runTest { + val userId = "activeUserId" + coEvery { authDiskSource.userState } returns USER_STATE + coEvery { generatorDiskSource.getPasscodeGenerationOptions(userId) } returns null - val result = repository.getPasscodeGenerationOptions() + val result = repository.getPasscodeGenerationOptions() - assertNull(result) - coVerify { generatorDiskSource.getPasscodeGenerationOptions(userId) } - } + assertNull(result) + coVerify { generatorDiskSource.getPasscodeGenerationOptions(userId) } + } @Test fun `savePasscodeGenerationOptions should store options correctly`() = runTest { @@ -220,32 +220,34 @@ class GeneratorRepositoryTest { coVerify { generatorDiskSource.storePasscodeGenerationOptions(userId, optionsToSave) } } - @Suppress("MaxLineLength") @Test - fun `savePasscodeGenerationOptions should not store options when there is no active user`() = runTest { - val optionsToSave = PasscodeGenerationOptions( - length = 14, - allowAmbiguousChar = false, - hasNumbers = true, - minNumber = 0, - hasUppercase = true, - minUppercase = null, - hasLowercase = false, - minLowercase = null, - allowSpecial = false, - minSpecial = 1, - allowCapitalize = false, - allowIncludeNumber = false, - wordSeparator = "-", - numWords = 3, - ) + fun `savePasscodeGenerationOptions should not store options when there is no active user`() = + runTest { + val optionsToSave = PasscodeGenerationOptions( + length = 14, + allowAmbiguousChar = false, + hasNumbers = true, + minNumber = 0, + hasUppercase = true, + minUppercase = null, + hasLowercase = false, + minLowercase = null, + allowSpecial = false, + minSpecial = 1, + allowCapitalize = false, + allowIncludeNumber = false, + wordSeparator = "-", + numWords = 3, + ) - coEvery { authDiskSource.userState } returns null + coEvery { authDiskSource.userState } returns null - repository.savePasscodeGenerationOptions(optionsToSave) + repository.savePasscodeGenerationOptions(optionsToSave) - coVerify(exactly = 0) { generatorDiskSource.storePasscodeGenerationOptions(any(), any()) } - } + coVerify(exactly = 0) { + generatorDiskSource.storePasscodeGenerationOptions(any(), any()) + } + } private val USER_STATE = UserStateJson( activeUserId = "activeUserId", diff --git a/app/src/test/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryTest.kt index 4a037a6af..cd8ce3b09 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryTest.kt @@ -1430,57 +1430,59 @@ class VaultRepositoryTest { @Test @Suppress("MaxLineLength") - fun `createCipher with ciphersService createCipher failure should return CreateCipherResult failure`() = runTest { - val mockCipherView = createMockCipherView(number = 1) - coEvery { - vaultSdkSource.encryptCipher(cipherView = mockCipherView) - } returns createMockSdkCipher(number = 1).asSuccess() - coEvery { - ciphersService.createCipher( - body = createMockCipherJsonRequest(number = 1), + fun `createCipher with ciphersService createCipher failure should return CreateCipherResult failure`() = + runTest { + val mockCipherView = createMockCipherView(number = 1) + coEvery { + vaultSdkSource.encryptCipher(cipherView = mockCipherView) + } returns createMockSdkCipher(number = 1).asSuccess() + coEvery { + ciphersService.createCipher( + body = createMockCipherJsonRequest(number = 1), + ) + } returns IllegalStateException().asFailure() + + val result = vaultRepository.createCipher(cipherView = mockCipherView) + + assertEquals( + CreateCipherResult.Error, + result, ) - } returns IllegalStateException().asFailure() - - val result = vaultRepository.createCipher(cipherView = mockCipherView) - - assertEquals( - CreateCipherResult.Error, - result, - ) - } + } @Test @Suppress("MaxLineLength") - fun `createCipher with ciphersService createCipher success should return CreateCipherResult success`() = runTest { - val mockCipherView = createMockCipherView(number = 1) - coEvery { - vaultSdkSource.encryptCipher(cipherView = mockCipherView) - } returns createMockSdkCipher(number = 1).asSuccess() - coEvery { - ciphersService.createCipher( - body = createMockCipherJsonRequest(number = 1), + fun `createCipher with ciphersService createCipher success should return CreateCipherResult success`() = + runTest { + val mockCipherView = createMockCipherView(number = 1) + coEvery { + vaultSdkSource.encryptCipher(cipherView = mockCipherView) + } returns createMockSdkCipher(number = 1).asSuccess() + coEvery { + ciphersService.createCipher( + body = createMockCipherJsonRequest(number = 1), + ) + } returns createMockCipher(number = 1).asSuccess() + coEvery { + syncService.sync() + } returns Result.success(createMockSyncResponse(1)) + coEvery { + vaultSdkSource.decryptCipherList(listOf(createMockSdkCipher(1))) + } returns listOf(createMockCipherView(1)).asSuccess() + coEvery { + vaultSdkSource.decryptFolderList(listOf(createMockSdkFolder(1))) + } returns listOf(createMockFolderView(1)).asSuccess() + coEvery { + vaultSdkSource.decryptSendList(listOf(createMockSdkSend(1))) + } returns listOf(createMockSendView(1)).asSuccess() + + val result = vaultRepository.createCipher(cipherView = mockCipherView) + + assertEquals( + CreateCipherResult.Success, + result, ) - } returns createMockCipher(number = 1).asSuccess() - coEvery { - syncService.sync() - } returns Result.success(createMockSyncResponse(1)) - coEvery { - vaultSdkSource.decryptCipherList(listOf(createMockSdkCipher(1))) - } returns listOf(createMockCipherView(1)).asSuccess() - coEvery { - vaultSdkSource.decryptFolderList(listOf(createMockSdkFolder(1))) - } returns listOf(createMockFolderView(1)).asSuccess() - coEvery { - vaultSdkSource.decryptSendList(listOf(createMockSdkSend(1))) - } returns listOf(createMockSendView(1)).asSuccess() - - val result = vaultRepository.createCipher(cipherView = mockCipherView) - - assertEquals( - CreateCipherResult.Success, - result, - ) - } + } //region Helper functions 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 f3c1db0ec..834e4d31f 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 @@ -911,30 +911,30 @@ class GeneratorViewModelTest : BaseViewModelTest() { assertEquals(expectedState, viewModel.stateFlow.value) } - @Suppress("MaxLineLength") @Test - fun `ToggleIncludeNumberChange should update the includeNumber property correctly`() = runTest { - viewModel.actionChannel.trySend( - GeneratorAction - .MainType - .Username - .UsernameType - .RandomWord - .ToggleIncludeNumberChange( - includeNumber = true, - ), - ) + fun `ToggleIncludeNumberChange should update the includeNumber property correctly`() = + runTest { + viewModel.actionChannel.trySend( + GeneratorAction + .MainType + .Username + .UsernameType + .RandomWord + .ToggleIncludeNumberChange( + includeNumber = true, + ), + ) - val expectedState = defaultRandomWordState.copy( - selectedType = GeneratorState.MainType.Username( - GeneratorState.MainType.Username.UsernameType.RandomWord( - includeNumber = true, + val expectedState = defaultRandomWordState.copy( + selectedType = GeneratorState.MainType.Username( + GeneratorState.MainType.Username.UsernameType.RandomWord( + includeNumber = true, + ), ), - ), - ) + ) - assertEquals(expectedState, viewModel.stateFlow.value) - } + assertEquals(expectedState, viewModel.stateFlow.value) + } } //region Helper Functions diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/NewSendViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/NewSendViewModelTest.kt index 8c131066a..02c382559 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/NewSendViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/NewSendViewModelTest.kt @@ -99,7 +99,8 @@ class NewSendViewModelTest : BaseViewModelTest() { input = "input", isHideByDefaultChecked = false, ), - ), awaitItem(), + ), + awaitItem(), ) } }