BIT-2015 BIT-2016: Fix min number and min special chars not propagating (#1163)

This commit is contained in:
Caleb Derosier 2024-03-20 15:51:51 -06:00 committed by Álison Fernandes
parent 3394ff4648
commit 0791d787e0
3 changed files with 29 additions and 2 deletions

View file

@ -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

View file

@ -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<List<PasswordHistoryView>>>(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)
}
}

View file

@ -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")