diff --git a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt index 3a4242aae9..2e66ffe655 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryImpl.kt @@ -211,6 +211,7 @@ class AuthRepositoryImpl( isBiometricsEnabledProvider = ::isBiometricsEnabled, vaultUnlockTypeProvider = ::getVaultUnlockType, isLoggedInProvider = ::isUserLoggedIn, + isDeviceTrustedProvider = ::isDeviceTrusted, ) } .filter { @@ -230,6 +231,7 @@ class AuthRepositoryImpl( isBiometricsEnabledProvider = ::isBiometricsEnabled, vaultUnlockTypeProvider = ::getVaultUnlockType, isLoggedInProvider = ::isUserLoggedIn, + isDeviceTrustedProvider = ::isDeviceTrusted, ), ) @@ -1154,6 +1156,10 @@ class AuthRepositoryImpl( userId: String, ): Boolean = authDiskSource.getUserBiometricUnlockKey(userId = userId) != null + private fun isDeviceTrusted( + userId: String, + ): Boolean = authDiskSource.getDeviceKey(userId = userId) != null + private fun isUserLoggedIn( userId: String, ): Boolean = authDiskSource.getAccountTokens(userId = userId)?.isLoggedIn == true diff --git a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/UserState.kt b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/UserState.kt index a447a47714..e38cb1d3ef 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/UserState.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/UserState.kt @@ -59,8 +59,20 @@ data class UserState( val isVaultUnlocked: Boolean, val needsPasswordReset: Boolean, val needsMasterPassword: Boolean, + val trustedDevice: TrustedDevice?, val organizations: List, val isBiometricsEnabled: Boolean, val vaultUnlockType: VaultUnlockType = VaultUnlockType.MASTER_PASSWORD, ) + + /** + * Models the data related to trusted device encryption (TDE). + */ + data class TrustedDevice( + val isDeviceTrusted: Boolean, + val hasMasterPassword: Boolean, + val hasAdminApproval: Boolean, + val hasLoginApprovingDevice: Boolean, + val hasResetPasswordPermission: Boolean, + ) } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensions.kt b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensions.kt index d932c811ce..9dbf6525fa 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensions.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensions.kt @@ -81,6 +81,7 @@ fun UserStateJson.toUserState( isBiometricsEnabledProvider: (userId: String) -> Boolean, vaultUnlockTypeProvider: (userId: String) -> VaultUnlockType, isLoggedInProvider: (userId: String) -> Boolean, + isDeviceTrustedProvider: (userId: String) -> Boolean, ): UserState = UserState( activeUserId = this.activeUserId, @@ -92,7 +93,21 @@ fun UserStateJson.toUserState( val userId = profile.userId val vaultUnlocked = vaultState.statusFor(userId) == VaultUnlockData.Status.UNLOCKED val needsPasswordReset = profile.forcePasswordResetReason != null - val needsMasterPassword = profile.userDecryptionOptions?.hasMasterPassword == false + val decryptionOptions = profile.userDecryptionOptions + val trustedDeviceOptions = decryptionOptions?.trustedDeviceUserDecryptionOptions + val keyConnectorOptions = decryptionOptions?.keyConnectorUserDecryptionOptions + val needsMasterPassword = decryptionOptions?.hasMasterPassword == false && + trustedDeviceOptions?.hasManageResetPasswordPermission != false && + keyConnectorOptions == null + val trustedDevice = trustedDeviceOptions?.let { + UserState.TrustedDevice( + isDeviceTrusted = isDeviceTrustedProvider(userId), + hasMasterPassword = decryptionOptions.hasMasterPassword, + hasAdminApproval = it.hasAdminApproval, + hasLoginApprovingDevice = it.hasLoginApprovingDevice, + hasResetPasswordPermission = it.hasManageResetPasswordPermission, + ) + } UserState.Account( userId = userId, @@ -114,6 +129,7 @@ fun UserStateJson.toUserState( isBiometricsEnabled = isBiometricsEnabledProvider(userId), vaultUnlockType = vaultUnlockTypeProvider(userId), needsMasterPassword = needsMasterPassword, + trustedDevice = trustedDevice, ) }, hasPendingAccountAddition = hasPendingAccountAddition, diff --git a/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryTest.kt index f425fe6ed3..ceaa5256fb 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/AuthRepositoryTest.kt @@ -306,6 +306,7 @@ class AuthRepositoryTest { isBiometricsEnabledProvider = { false }, vaultUnlockTypeProvider = { VaultUnlockType.MASTER_PASSWORD }, isLoggedInProvider = { false }, + isDeviceTrustedProvider = { false }, ), repository.userStateFlow.value, ) @@ -329,6 +330,7 @@ class AuthRepositoryTest { isBiometricsEnabledProvider = { false }, vaultUnlockTypeProvider = { VaultUnlockType.PIN }, isLoggedInProvider = { false }, + isDeviceTrustedProvider = { false }, ), repository.userStateFlow.value, ) @@ -343,6 +345,7 @@ class AuthRepositoryTest { isBiometricsEnabledProvider = { false }, vaultUnlockTypeProvider = { VaultUnlockType.PIN }, isLoggedInProvider = { false }, + isDeviceTrustedProvider = { false }, ), repository.userStateFlow.value, ) @@ -369,6 +372,7 @@ class AuthRepositoryTest { isBiometricsEnabledProvider = { false }, vaultUnlockTypeProvider = { VaultUnlockType.MASTER_PASSWORD }, isLoggedInProvider = { false }, + isDeviceTrustedProvider = { false }, ), repository.userStateFlow.value, ) @@ -563,6 +567,7 @@ class AuthRepositoryTest { isBiometricsEnabledProvider = { false }, vaultUnlockTypeProvider = { VaultUnlockType.MASTER_PASSWORD }, isLoggedInProvider = { false }, + isDeviceTrustedProvider = { false }, ) val finalUserState = SINGLE_USER_STATE_2.toUserState( vaultState = VAULT_UNLOCK_DATA, @@ -571,6 +576,7 @@ class AuthRepositoryTest { isBiometricsEnabledProvider = { false }, vaultUnlockTypeProvider = { VaultUnlockType.MASTER_PASSWORD }, isLoggedInProvider = { false }, + isDeviceTrustedProvider = { false }, ) val kdf = SINGLE_USER_STATE_1.activeAccount.profile.toSdkParams() coEvery { @@ -3150,6 +3156,7 @@ class AuthRepositoryTest { isBiometricsEnabledProvider = { false }, vaultUnlockTypeProvider = { VaultUnlockType.MASTER_PASSWORD }, isLoggedInProvider = { false }, + isDeviceTrustedProvider = { false }, ) fakeAuthDiskSource.userState = SINGLE_USER_STATE_1 assertEquals( @@ -3181,6 +3188,7 @@ class AuthRepositoryTest { isBiometricsEnabledProvider = { false }, vaultUnlockTypeProvider = { VaultUnlockType.MASTER_PASSWORD }, isLoggedInProvider = { false }, + isDeviceTrustedProvider = { false }, ) fakeAuthDiskSource.userState = SINGLE_USER_STATE_1 assertEquals( @@ -3210,6 +3218,7 @@ class AuthRepositoryTest { isBiometricsEnabledProvider = { false }, vaultUnlockTypeProvider = { VaultUnlockType.MASTER_PASSWORD }, isLoggedInProvider = { false }, + isDeviceTrustedProvider = { false }, ) fakeAuthDiskSource.userState = MULTI_USER_STATE assertEquals( diff --git a/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensionsTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensionsTest.kt index dd3946f4b9..51e5325e13 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensionsTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensionsTest.kt @@ -229,6 +229,7 @@ class UserStateJsonExtensionsTest { isBiometricsEnabled = false, vaultUnlockType = VaultUnlockType.PIN, needsMasterPassword = false, + trustedDevice = null, ), ), ), @@ -281,6 +282,7 @@ class UserStateJsonExtensionsTest { isBiometricsEnabledProvider = { false }, vaultUnlockTypeProvider = { VaultUnlockType.PIN }, isLoggedInProvider = { true }, + isDeviceTrustedProvider = { false }, ), ) } @@ -311,6 +313,7 @@ class UserStateJsonExtensionsTest { isBiometricsEnabled = true, vaultUnlockType = VaultUnlockType.MASTER_PASSWORD, needsMasterPassword = true, + trustedDevice = null, ), ), hasPendingAccountAddition = true, @@ -359,6 +362,97 @@ class UserStateJsonExtensionsTest { isBiometricsEnabledProvider = { true }, vaultUnlockTypeProvider = { VaultUnlockType.MASTER_PASSWORD }, isLoggedInProvider = { false }, + isDeviceTrustedProvider = { false }, + ), + ) + } + + @Suppress("MaxLineLength") + @Test + fun `toUserState should preserve values of trustedDeviceUserDecryptionOptions`() { + assertEquals( + UserState( + activeUserId = "activeUserId", + accounts = listOf( + UserState.Account( + userId = "activeUserId", + name = "activeName", + email = "activeEmail", + // This value is calculated from the userId + avatarColorHex = "#ffecbc49", + environment = Environment.Eu, + isPremium = true, + isLoggedIn = false, + isVaultUnlocked = false, + needsPasswordReset = false, + organizations = listOf( + Organization( + id = "organizationId", + name = "organizationName", + ), + ), + isBiometricsEnabled = false, + vaultUnlockType = VaultUnlockType.MASTER_PASSWORD, + needsMasterPassword = false, + trustedDevice = UserState.TrustedDevice( + isDeviceTrusted = true, + hasMasterPassword = false, + hasAdminApproval = false, + hasLoginApprovingDevice = true, + hasResetPasswordPermission = false, + ), + ), + ), + hasPendingAccountAddition = true, + ), + UserStateJson( + activeUserId = "activeUserId", + accounts = mapOf( + "activeUserId" to AccountJson( + profile = mockk { + every { userId } returns "activeUserId" + every { name } returns "activeName" + every { email } returns "activeEmail" + every { avatarColorHex } returns null + every { hasPremium } returns true + every { forcePasswordResetReason } returns null + every { userDecryptionOptions } returns UserDecryptionOptionsJson( + hasMasterPassword = false, + trustedDeviceUserDecryptionOptions = TrustedDeviceUserDecryptionOptionsJson( + encryptedPrivateKey = null, + encryptedUserKey = null, + hasAdminApproval = false, + hasLoginApprovingDevice = true, + hasManageResetPasswordPermission = false, + ), + keyConnectorUserDecryptionOptions = null, + ) + }, + tokens = null, + settings = AccountJson.Settings( + environmentUrlData = EnvironmentUrlDataJson.DEFAULT_EU, + ), + ), + ), + ) + .toUserState( + vaultState = emptyList(), + userOrganizationsList = listOf( + UserOrganizations( + userId = "activeUserId", + organizations = listOf( + Organization( + id = "organizationId", + name = "organizationName", + ), + ), + ), + ), + hasPendingAccountAddition = true, + isBiometricsEnabledProvider = { false }, + vaultUnlockTypeProvider = { VaultUnlockType.MASTER_PASSWORD }, + isLoggedInProvider = { false }, + isDeviceTrustedProvider = { true }, ), ) } diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingViewModelTest.kt index 623eb119e1..877b269355 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingViewModelTest.kt @@ -75,6 +75,7 @@ class LandingViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) @@ -208,6 +209,7 @@ class LandingViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ) val userState = UserState( activeUserId = "activeUserId", @@ -260,6 +262,7 @@ class LandingViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ) val userState = UserState( activeUserId = "activeUserId", diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginViewModelTest.kt index 1dfce7d121..3df71e6701 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginViewModelTest.kt @@ -129,6 +129,7 @@ class LoginViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt index b88c8e3ea4..54c8362609 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt @@ -121,6 +121,7 @@ class VaultUnlockViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) @@ -156,6 +157,7 @@ class VaultUnlockViewModelTest : BaseViewModelTest() { isBiometricsEnabled = true, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) @@ -762,6 +764,7 @@ private val DEFAULT_ACCOUNT = UserState.Account( isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ) private val DEFAULT_USER_STATE = UserState( diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModelTest.kt index d5c2dd8765..0e7be6525d 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModelTest.kt @@ -51,6 +51,7 @@ class RootNavViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ), @@ -78,6 +79,7 @@ class RootNavViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ), @@ -105,6 +107,7 @@ class RootNavViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = true, + trustedDevice = null, ), ), ), @@ -136,6 +139,7 @@ class RootNavViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), hasPendingAccountAddition = true, @@ -164,6 +168,7 @@ class RootNavViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ), @@ -200,6 +205,7 @@ class RootNavViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ), @@ -236,6 +242,7 @@ class RootNavViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ), @@ -278,6 +285,7 @@ class RootNavViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ), @@ -311,6 +319,7 @@ class RootNavViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ), diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchViewModelTest.kt index 6005f2f445..bae39b0598 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchViewModelTest.kt @@ -1369,6 +1369,7 @@ private val DEFAULT_USER_STATE = UserState( isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/loginapproval/LoginApprovalViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/loginapproval/LoginApprovalViewModelTest.kt index 222fe6bb04..6edd88f26e 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/loginapproval/LoginApprovalViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/loginapproval/LoginApprovalViewModelTest.kt @@ -291,6 +291,7 @@ private val DEFAULT_USER_STATE = UserState( needsPasswordReset = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModelTest.kt index 4f61baa60e..493bde7a2e 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModelTest.kt @@ -596,6 +596,7 @@ private val DEFAULT_USER_STATE = UserState( isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) 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 5e949c0645..580c01fb36 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 @@ -2377,6 +2377,7 @@ private val DEFAULT_USER_STATE = UserState( isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModelTest.kt index 2a60c67c1a..9d2eb928c8 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModelTest.kt @@ -1098,6 +1098,7 @@ class AddSendViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ) private val DEFAULT_USER_STATE = UserState( 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 9c174ab053..44c63319b5 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 @@ -2490,6 +2490,7 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { isBiometricsEnabled = true, vaultUnlockType = VaultUnlockType.MASTER_PASSWORD, needsMasterPassword = false, + trustedDevice = null, ), ), hasPendingAccountAddition = false, diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt index 2e7688403d..79b240168e 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt @@ -432,6 +432,7 @@ class CipherViewExtensionsTest { isBiometricsEnabled = true, vaultUnlockType = VaultUnlockType.MASTER_PASSWORD, needsMasterPassword = false, + trustedDevice = null, ) } diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/attachments/AttachmentsViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/attachments/AttachmentsViewModelTest.kt index e942fba822..45691d6d2e 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/attachments/AttachmentsViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/attachments/AttachmentsViewModelTest.kt @@ -557,6 +557,7 @@ private val DEFAULT_USER_STATE = UserState( isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt index d438ad6bbd..856e0831ac 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt @@ -2014,6 +2014,7 @@ class VaultItemViewModelTest : BaseViewModelTest() { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModelTest.kt index 4862b02969..36c0137fc3 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModelTest.kt @@ -1459,6 +1459,7 @@ private val DEFAULT_ACCOUNT = UserState.Account( isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ) private val DEFAULT_USER_STATE = UserState( diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModelTest.kt index 9c9b6f512f..f3dde47e0d 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModelTest.kt @@ -491,6 +491,7 @@ private val DEFAULT_USER_STATE = UserState( name = "mockOrganizationName-3", ), ), + trustedDevice = null, ), ), ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/util/VaultMoveToOrganizationExtensionsTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/util/VaultMoveToOrganizationExtensionsTest.kt index 056d1a850b..7d09e9ff68 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/util/VaultMoveToOrganizationExtensionsTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/util/VaultMoveToOrganizationExtensionsTest.kt @@ -115,6 +115,7 @@ private fun createMockUserState(hasOrganizations: Boolean = true): UserState = } else { emptyList() }, + trustedDevice = null, ), ), ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModelTest.kt index bf562b7001..592fe864ea 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModelTest.kt @@ -183,6 +183,7 @@ class VaultViewModelTest : BaseViewModelTest() { name = "Test Organization", ), ), + trustedDevice = null, ), ), ) @@ -261,6 +262,7 @@ class VaultViewModelTest : BaseViewModelTest() { name = "Test Organization", ), ), + trustedDevice = null, ), ), ) @@ -1473,6 +1475,7 @@ private val DEFAULT_USER_STATE = UserState( isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), UserState.Account( userId = "lockedUserId", @@ -1487,6 +1490,7 @@ private val DEFAULT_USER_STATE = UserState( isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ), ), ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensionsTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensionsTest.kt index ead0f6dd01..e432e14893 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensionsTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensionsTest.kt @@ -78,6 +78,7 @@ class UserStateExtensionsTest { name = "organizationName", ), ), + trustedDevice = null, ), UserState.Account( userId = "lockedUserId", @@ -97,6 +98,7 @@ class UserStateExtensionsTest { name = "organizationName", ), ), + trustedDevice = null, ), UserState.Account( userId = "unlockedUserId", @@ -120,6 +122,7 @@ class UserStateExtensionsTest { name = "organizationName", ), ), + trustedDevice = null, ), UserState.Account( userId = "loggedOutUserId", @@ -143,6 +146,7 @@ class UserStateExtensionsTest { name = "organizationName", ), ), + trustedDevice = null, ), ), ) @@ -181,6 +185,7 @@ class UserStateExtensionsTest { name = "organizationName", ), ), + trustedDevice = null, ) .toAccountSummary(isActive = true), ) @@ -217,6 +222,7 @@ class UserStateExtensionsTest { name = "organizationName", ), ), + trustedDevice = null, ) .toAccountSummary(isActive = false), ) @@ -257,6 +263,7 @@ class UserStateExtensionsTest { name = "organizationName", ), ), + trustedDevice = null, ), ), ) @@ -280,6 +287,7 @@ class UserStateExtensionsTest { isBiometricsEnabled = false, organizations = emptyList(), needsMasterPassword = false, + trustedDevice = null, ) .toVaultFilterData(isIndividualVaultDisabled = false), ) @@ -326,6 +334,7 @@ class UserStateExtensionsTest { name = "Organization A", ), ), + trustedDevice = null, ) .toVaultFilterData( isIndividualVaultDisabled = false, @@ -373,6 +382,7 @@ class UserStateExtensionsTest { name = "Organization A", ), ), + trustedDevice = null, ) .toVaultFilterData( isIndividualVaultDisabled = true,