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 e4e74ef1e..94e3d582e 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 @@ -522,8 +522,8 @@ class GeneratorViewModel @Inject constructor( avoidAmbiguous = password.avoidAmbiguousChars, minLowercase = null, minUppercase = null, - minNumber = null, - minSpecial = null, + minNumber = password.minNumbers.toUByte(), + minSpecial = password.minSpecial.toUByte(), ) val shouldSave = !password.isUserInteracting diff --git a/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/repository/util/FakeGeneratorRepository.kt b/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/repository/util/FakeGeneratorRepository.kt index c77443778..e4ed61f65 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/repository/util/FakeGeneratorRepository.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/tools/generator/repository/util/FakeGeneratorRepository.kt @@ -21,6 +21,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asSharedFlow +import org.junit.jupiter.api.Assertions.assertEquals /** * A fake implementation of [GeneratorRepository] for testing purposes. @@ -38,6 +39,8 @@ class FakeGeneratorRepository : GeneratorRepository { private var usernameGenerationOptions: UsernameGenerationOptions? = null + private var passwordGeneratorRequest: PasswordGeneratorRequest? = null + private val mutablePasswordHistoryStateFlow = MutableStateFlow>>(LocalDataState.Loading) @@ -79,6 +82,7 @@ class FakeGeneratorRepository : GeneratorRepository { passwordGeneratorRequest: PasswordGeneratorRequest, shouldSave: Boolean, ): GeneratedPasswordResult { + this.passwordGeneratorRequest = passwordGeneratorRequest return generatePasswordResult } @@ -195,4 +199,11 @@ class FakeGeneratorRepository : GeneratorRepository { fun setMockPasswordGeneratorPolicy(policy: PolicyInformation.PasswordGenerator?) { this.passwordGeneratorPolicy = policy } + + /** + * Asserts that the passed in request matches the stored request. + */ + fun assertEqualsStoredRequest(request: PasswordGeneratorRequest) { + assertEquals(request, passwordGeneratorRequest) + } } 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 c619d0fc5..23e5e96c4 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 @@ -3,6 +3,7 @@ package com.x8bit.bitwarden.ui.tools.feature.generator import androidx.lifecycle.SavedStateHandle import app.cash.turbine.test import app.cash.turbine.turbineScope +import com.bitwarden.generators.PasswordGeneratorRequest import com.x8bit.bitwarden.R import com.x8bit.bitwarden.data.auth.repository.AuthRepository import com.x8bit.bitwarden.data.auth.repository.model.PolicyInformation @@ -281,6 +282,21 @@ class GeneratorViewModelTest : BaseViewModelTest() { updatedPasswordOptions, fakeGeneratorRepository.getPasscodeGenerationOptions(), ) + + fakeGeneratorRepository.assertEqualsStoredRequest( + PasswordGeneratorRequest( + lowercase = true, + uppercase = true, + numbers = true, + special = false, + length = 14.toUByte(), + avoidAmbiguous = false, + minLowercase = null, + minUppercase = null, + minNumber = 1.toUByte(), + minSpecial = 1.toUByte(), + ), + ) } @Suppress("MaxLineLength")