From 00db087ceecac47246b76e7811bd21923bd6b31e Mon Sep 17 00:00:00 2001 From: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com> Date: Tue, 21 May 2024 09:53:40 -0400 Subject: [PATCH] Auth/PM-5501 - VaultTimeoutSettingsSvc State Provider Migration - Cleanup desktop orphaned data (#9277) * PM-5501 - Remove global vault timeout data on desktop to avoid orphaning the data. * PM-5501 - Test new migration logic. --- ...e-vault-timeout-settings-svc-to-state-provider.spec.ts | 8 ++++++++ ...igrate-vault-timeout-settings-svc-to-state-provider.ts | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.spec.ts b/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.spec.ts index 1a736c1623a..aa715c3c06a 100644 --- a/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.spec.ts +++ b/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.spec.ts @@ -13,6 +13,10 @@ import { // Represents data in state service pre-migration function preMigrationJson() { return { + // desktop only global data format + "global.vaultTimeout": -1, + "global.vaultTimeoutAction": "lock", + global: { vaultTimeout: 30, vaultTimeoutAction: "lock", @@ -267,6 +271,10 @@ describe("VaultTimeoutSettingsServiceStateProviderMigrator", () => { otherStuff: "otherStuff", }); + // Expect we removed desktop specially formatted global data + expect(helper.remove).toHaveBeenCalledWith("global\\.vaultTimeout"); + expect(helper.remove).toHaveBeenCalledWith("global\\.vaultTimeoutAction"); + // User data expect(helper.set).toHaveBeenCalledWith("user1", { settings: { diff --git a/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.ts b/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.ts index ee9ee4c9ea3..7451fd37514 100644 --- a/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.ts +++ b/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.ts @@ -122,10 +122,15 @@ export class VaultTimeoutSettingsServiceStateProviderMigrator extends Migrator<6 await Promise.all([...accounts.map(({ userId, account }) => migrateAccount(userId, account))]); - // Delete global data + // Delete global data (works for browser extension and web; CLI doesn't have these as global settings). delete globalData?.vaultTimeout; delete globalData?.vaultTimeoutAction; await helper.set("global", globalData); + + // Remove desktop only settings. These aren't found by the above global key removal b/c of + // the different storage key format. This removal does not cause any issues on migrating for other clients. + await helper.remove("global\\.vaultTimeout"); + await helper.remove("global\\.vaultTimeoutAction"); } async rollback(helper: MigrationHelper): Promise {