[PM-24598] Map AutofillSaveItem to VaultItemCipherType (#5714)

This commit is contained in:
Patrick Honkonen 2025-08-15 16:12:01 -04:00 committed by GitHub
parent 36e06cdac7
commit 4fb96cb782
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 52 additions and 4 deletions

View File

@ -61,9 +61,9 @@ import com.x8bit.bitwarden.ui.tools.feature.send.addedit.ModeType
import com.x8bit.bitwarden.ui.tools.feature.send.addedit.navigateToAddEditSend
import com.x8bit.bitwarden.ui.vault.feature.addedit.VaultAddEditArgs
import com.x8bit.bitwarden.ui.vault.feature.addedit.navigateToVaultAddEdit
import com.x8bit.bitwarden.ui.vault.feature.addedit.util.toVaultItemCipherType
import com.x8bit.bitwarden.ui.vault.feature.itemlisting.navigateToVaultItemListingAsRoot
import com.x8bit.bitwarden.ui.vault.model.VaultAddEditType
import com.x8bit.bitwarden.ui.vault.model.VaultItemCipherType
import com.x8bit.bitwarden.ui.vault.model.VaultItemListingType
import java.util.concurrent.atomic.AtomicReference
@ -225,7 +225,7 @@ fun RootNavScreen(
navController.navigateToVaultAddEdit(
args = VaultAddEditArgs(
vaultAddEditType = VaultAddEditType.AddItem,
vaultItemCipherType = VaultItemCipherType.LOGIN,
vaultItemCipherType = currentState.autofillSaveItem.toVaultItemCipherType(),
),
navOptions = rootNavOptions,
)

View File

@ -5,6 +5,7 @@ import com.x8bit.bitwarden.data.autofill.model.AutofillSaveItem
import com.x8bit.bitwarden.ui.vault.feature.addedit.VaultAddEditState
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.UriItem
import com.x8bit.bitwarden.ui.vault.model.VaultCardExpirationMonth
import com.x8bit.bitwarden.ui.vault.model.VaultItemCipherType
import java.util.UUID
/**
@ -54,3 +55,11 @@ fun AutofillSaveItem.toDefaultAddTypeContent(
)
}
}
/**
* Converts an [AutofillSaveItem] to a [VaultItemCipherType].
*/
fun AutofillSaveItem.toVaultItemCipherType(): VaultItemCipherType = when (this) {
is AutofillSaveItem.Card -> VaultItemCipherType.CARD
is AutofillSaveItem.Login -> VaultItemCipherType.LOGIN
}

View File

@ -2,6 +2,7 @@ package com.x8bit.bitwarden.ui.platform.feature.rootnav
import androidx.navigation.navOptions
import com.bitwarden.ui.platform.base.createMockNavHostController
import com.x8bit.bitwarden.data.autofill.model.AutofillSaveItem
import com.x8bit.bitwarden.data.autofill.model.AutofillSelectionData
import com.x8bit.bitwarden.ui.auth.feature.accountsetup.SetupAutofillRoute
import com.x8bit.bitwarden.ui.auth.feature.accountsetup.SetupCompleteRoute
@ -242,9 +243,9 @@ class RootNavScreenTest : BitwardenComposeTest() {
}
}
// Make sure navigating to vault unlocked for autofill save works as expected:
// Make sure navigating to vault unlocked for autofill save for login works as expected:
rootNavStateFlow.value = RootNavState.VaultUnlockedForAutofillSave(
autofillSaveItem = mockk(),
autofillSaveItem = mockk<AutofillSaveItem.Login>(),
)
composeTestRule.runOnIdle {
verify {
@ -265,6 +266,29 @@ class RootNavScreenTest : BitwardenComposeTest() {
}
}
// Make sure navigating to vault unlocked for autofill save for card works as expected:
rootNavStateFlow.value = RootNavState.VaultUnlockedForAutofillSave(
autofillSaveItem = mockk<AutofillSaveItem.Card>(),
)
composeTestRule.runOnIdle {
verify {
mockNavHostController.navigate(
route = VaultUnlockedGraphRoute,
navOptions = expectedNavOptions,
)
mockNavHostController.navigate(
route = VaultAddEditRoute(
vaultAddEditMode = VaultAddEditMode.ADD,
vaultItemId = null,
vaultItemCipherType = VaultItemCipherType.CARD,
selectedFolderId = null,
selectedCollectionId = null,
),
navOptions = expectedNavOptions,
)
}
}
// Make sure navigating to vault unlocked for autofill works as expected:
rootNavStateFlow.value = RootNavState.VaultUnlockedForAutofillSelection(
activeUserId = "userId",

View File

@ -4,7 +4,9 @@ import com.x8bit.bitwarden.data.autofill.model.AutofillSaveItem
import com.x8bit.bitwarden.ui.vault.feature.addedit.VaultAddEditState
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.UriItem
import com.x8bit.bitwarden.ui.vault.model.VaultCardExpirationMonth
import com.x8bit.bitwarden.ui.vault.model.VaultItemCipherType
import io.mockk.every
import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import org.junit.jupiter.api.Assertions.assertEquals
@ -76,4 +78,17 @@ class AutofillSaveItemExtensionsTest {
.toDefaultAddTypeContent(isIndividualVaultDisabled = true),
)
}
@Test
fun `toVaultItemCipherType should return the correct VaultItemCipherType`() {
assertEquals(
VaultItemCipherType.CARD,
mockk<AutofillSaveItem.Card>().toVaultItemCipherType(),
)
assertEquals(
VaultItemCipherType.LOGIN,
mockk<AutofillSaveItem.Login>().toVaultItemCipherType(),
)
}
}