BIT-1286: Check for empty organization ID on SSO login screen (#694)

This commit is contained in:
Sean Weiser 2024-01-20 09:41:50 -06:00 committed by Álison Fernandes
parent 687455279b
commit 9779cb9cf2
2 changed files with 41 additions and 2 deletions

View file

@ -2,8 +2,10 @@ package com.x8bit.bitwarden.ui.auth.feature.enterprisesignon
import android.os.Parcelable
import androidx.lifecycle.SavedStateHandle
import com.x8bit.bitwarden.R
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
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.update
import kotlinx.parcelize.Parcelize
@ -47,6 +49,18 @@ class EnterpriseSignOnViewModel @Inject constructor(
private fun handleLogInClicked() {
// TODO BIT-816: submit request for single sign on
sendEvent(EnterpriseSignOnEvent.ShowToast("Not yet implemented."))
if (state.orgIdentifierInput.isBlank()) {
mutableStateFlow.update {
it.copy(
dialogState = EnterpriseSignOnState.DialogState.Error(
R.string.validation_field_required.asText(
R.string.org_identifier.asText(),
),
),
)
}
}
}
private fun handleOrgIdentifierInputChanged(

View file

@ -2,6 +2,7 @@ package com.x8bit.bitwarden.ui.auth.feature.enterprisesignon
import androidx.lifecycle.SavedStateHandle
import app.cash.turbine.test
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
import com.x8bit.bitwarden.ui.platform.base.util.asText
import kotlinx.coroutines.test.runTest
@ -44,11 +45,35 @@ class EnterpriseSignOnViewModelTest : BaseViewModelTest() {
}
@Test
fun `LogInClick should emit ShowToast`() = runTest {
fun `LogInClick with valid organization should emit ShowToast`() = runTest {
val state = DEFAULT_STATE.copy(orgIdentifierInput = "Test")
val viewModel = createViewModel(state)
viewModel.eventFlow.test {
viewModel.actionChannel.trySend(EnterpriseSignOnAction.LogInClick)
assertEquals(state, viewModel.stateFlow.value)
assertEquals(
EnterpriseSignOnEvent.ShowToast("Not yet implemented."),
awaitItem(),
)
}
}
@Suppress("MaxLineLength")
@Test
fun `LogInClick with invalid organization should emit ShowToast and show error dialog`() = runTest {
val viewModel = createViewModel()
viewModel.eventFlow.test {
viewModel.actionChannel.trySend(EnterpriseSignOnAction.LogInClick)
assertEquals(DEFAULT_STATE, viewModel.stateFlow.value)
assertEquals(
DEFAULT_STATE.copy(
dialogState = EnterpriseSignOnState.DialogState.Error(
R.string.validation_field_required.asText(
R.string.org_identifier.asText(),
),
),
),
viewModel.stateFlow.value,
)
assertEquals(
EnterpriseSignOnEvent.ShowToast("Not yet implemented."),
awaitItem(),