From 829934f7c01ee304fbe8e0c04ec271b20253da88 Mon Sep 17 00:00:00 2001 From: Oleg Semenenko <146032743+oleg-livefront@users.noreply.github.com> Date: Tue, 13 Feb 2024 16:36:08 -0600 Subject: [PATCH] BIT-1584 Fix the view password overflow item visibility (#1008) --- .../feature/util/CipherViewExtensions.kt | 6 ++-- .../datasource/sdk/model/CipherViewUtil.kt | 2 +- .../addedit/VaultAddEditViewModelTest.kt | 2 +- .../feature/util/CipherViewExtensionsTest.kt | 31 +++++++++++++++++++ 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/util/CipherViewExtensions.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/util/CipherViewExtensions.kt index 8d36bb8ee..011088698 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/util/CipherViewExtensions.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/util/CipherViewExtensions.kt @@ -20,9 +20,9 @@ fun CipherView.toOverflowActions(): List<ListingItemOverflowAction.VaultAction> this.login?.username?.let { ListingItemOverflowAction.VaultAction.CopyUsernameClick(username = it) }, - this.login?.password?.let { - ListingItemOverflowAction.VaultAction.CopyPasswordClick(password = it) - }, + this.login?.password + ?.let { ListingItemOverflowAction.VaultAction.CopyPasswordClick(password = it) } + .takeIf { this.viewPassword }, this.login?.totp ?.let { ListingItemOverflowAction.VaultAction.CopyTotpClick(totpCode = it) } .takeIf { this.type == CipherType.LOGIN }, diff --git a/app/src/test/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/CipherViewUtil.kt b/app/src/test/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/CipherViewUtil.kt index 9541bf4ee..030d3c86a 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/CipherViewUtil.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/CipherViewUtil.kt @@ -68,7 +68,7 @@ fun createMockCipherView( secureNote = createMockSecureNoteView().takeIf { cipherType == CipherType.SECURE_NOTE }, edit = false, organizationUseTotp = false, - viewPassword = false, + viewPassword = true, localData = null, ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt index cc53733e4..5797a8e74 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt @@ -475,7 +475,7 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { password = "mockPassword-1", uri = listOf(UriItem("testId", "www.mockuri1.com", UriMatchType.HOST)), totpCode = "mockTotp-1", - canViewPassword = false, + canViewPassword = true, ) .copy(totp = "mockTotp-1"), ), diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/util/CipherViewExtensionsTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/util/CipherViewExtensionsTest.kt index 89e46737f..1767d9a52 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/util/CipherViewExtensionsTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/util/CipherViewExtensionsTest.kt @@ -46,6 +46,37 @@ class CipherViewExtensionsTest { ) } + @Suppress("MaxLineLength") + @Test + fun `toOverflowActions should return the correct actions when viewPassword is false for a login cipher`() { + val id = "mockId-1" + val username = "Bitwarden" + val password = "password" + val totpCode = "mockTotp-1" + val uri = "www.test.com" + val cipher = createMockCipherView(number = 1, cipherType = CipherType.LOGIN).copy( + id = id, + login = createMockLoginView(number = 1).copy( + username = username, + password = password, + uris = listOf(createMockUriView(number = 1).copy(uri = uri)), + ), + viewPassword = false, + ) + val result = cipher.toOverflowActions() + + assertEquals( + listOf( + ListingItemOverflowAction.VaultAction.ViewClick(cipherId = id), + ListingItemOverflowAction.VaultAction.EditClick(cipherId = id), + ListingItemOverflowAction.VaultAction.CopyUsernameClick(username = username), + ListingItemOverflowAction.VaultAction.CopyTotpClick(totpCode = totpCode), + ListingItemOverflowAction.VaultAction.LaunchClick(url = uri), + ), + result, + ) + } + @Test fun `toOverflowActions should return minimum actions for a login cipher`() { val id = "mockId-1"