Remove now-unnecessary unlocking check when calling sync (#1004)

This commit is contained in:
Brian Yencho 2024-02-13 10:23:25 -06:00 committed by Álison Fernandes
parent 1bb489a206
commit e115c51e36
2 changed files with 1 additions and 75 deletions

View file

@ -298,7 +298,7 @@ class VaultRepositoryImpl(
override fun sync() {
val userId = activeUserId ?: return
if (!syncJob.isCompleted || isVaultUnlocking(userId)) return
if (!syncJob.isCompleted) return
mutableCiphersStateFlow.updateToPendingOrLoading()
mutableDomainsStateFlow.updateToPendingOrLoading()
mutableFoldersStateFlow.updateToPendingOrLoading()

View file

@ -12,16 +12,13 @@ import com.bitwarden.core.Folder
import com.bitwarden.core.FolderView
import com.bitwarden.core.InitOrgCryptoRequest
import com.bitwarden.core.InitUserCryptoMethod
import com.bitwarden.core.InitUserCryptoRequest
import com.bitwarden.core.SendType
import com.bitwarden.core.SendView
import com.bitwarden.core.TotpResponse
import com.bitwarden.crypto.Kdf
import com.x8bit.bitwarden.data.auth.datasource.disk.model.AccountJson
import com.x8bit.bitwarden.data.auth.datasource.disk.model.UserStateJson
import com.x8bit.bitwarden.data.auth.datasource.disk.util.FakeAuthDiskSource
import com.x8bit.bitwarden.data.auth.repository.util.toSdkParams
import com.x8bit.bitwarden.data.auth.util.KdfParamsConstants.DEFAULT_PBKDF2_ITERATIONS
import com.x8bit.bitwarden.data.platform.base.FakeDispatcherManager
import com.x8bit.bitwarden.data.platform.datasource.disk.SettingsDiskSource
import com.x8bit.bitwarden.data.platform.manager.PushManager
@ -1332,77 +1329,6 @@ class VaultRepositoryTest {
}
}
@Suppress("MaxLineLength")
@Test
fun `sync should not be able to be called while isVaultUnlocking is true for the current user`() =
runTest {
val userId = "mockId-1"
val mockSyncResponse = createMockSyncResponse(number = 1)
coEvery { syncService.sync() } returns mockSyncResponse.asSuccess()
coEvery {
vaultSdkSource.initializeOrganizationCrypto(
userId = userId,
request = InitOrgCryptoRequest(
organizationKeys = createMockOrganizationKeys(1),
),
)
} returns InitializeCryptoResult.Success.asSuccess()
coEvery {
vaultDiskSource.replaceVaultData(
userId = MOCK_USER_STATE.activeUserId,
vault = mockSyncResponse,
)
} just runs
every {
settingsDiskSource.storeLastSyncTime(MOCK_USER_STATE.activeUserId, clock.instant())
} just runs
coEvery {
vaultSdkSource.decryptSendList(
userId = userId,
sendList = listOf(createMockSdkSend(number = 1)),
)
} returns listOf(createMockSendView(number = 1)).asSuccess()
fakeAuthDiskSource.storePrivateKey(
userId = "mockId-1",
privateKey = "mockPrivateKey-1",
)
fakeAuthDiskSource.storeUserKey(
userId = "mockId-1",
userKey = "mockKey-1",
)
fakeAuthDiskSource.userState = MOCK_USER_STATE
coEvery {
vaultSdkSource.initializeCrypto(
userId = userId,
request = InitUserCryptoRequest(
kdfParams = Kdf.Pbkdf2(iterations = DEFAULT_PBKDF2_ITERATIONS.toUInt()),
email = "email",
privateKey = "mockPrivateKey-1",
method = InitUserCryptoMethod.Password(
password = "mockPassword-1",
userKey = "mockKey-1",
),
),
)
} just awaits
every {
vaultLockManager.isVaultUnlocking(userId)
} returns true
// We call sync here but the call to the SyncService should be blocked
// by unlocking vault.
vaultRepository.sync()
coVerify(exactly = 0) { syncService.sync() }
every {
vaultLockManager.isVaultUnlocking(userId)
} returns false
vaultRepository.sync()
coVerify(exactly = 1) { syncService.sync() }
}
@Test
fun `clearUnlockedData should update the vaultDataStateFlow to Loading`() = runTest {
fakeAuthDiskSource.userState = MOCK_USER_STATE