1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-15 07:43:35 +00:00

[PM-17120] account deprovisioning banner (#13097)

* remove provider client privay banner, implement account deprovisioning banner

* add copy, make state depend on org plan type and org id

* cleanup

* refactor, add test

* cleanup

* cleanup

* add state migration

* Fix lintter error
This commit is contained in:
Brandon Treston
2025-02-05 16:04:23 -05:00
committed by GitHub
parent 8162be09b2
commit 1133775def
12 changed files with 243 additions and 77 deletions

View File

@@ -0,0 +1,50 @@
import { runMigrator } from "../migration-helper.spec";
import { IRREVERSIBLE } from "../migrator";
import { RemoveAcBannersDismissed } from "./70-remove-ac-banner-dismissed";
describe("RemoveAcBannersDismissed", () => {
const sut = new RemoveAcBannersDismissed(69, 70);
describe("migrate", () => {
it("deletes ac banner from all users", async () => {
const output = await runMigrator(sut, {
global_account_accounts: {
user1: {
email: "user1@email.com",
name: "User 1",
emailVerified: true,
},
user2: {
email: "user2@email.com",
name: "User 2",
emailVerified: true,
},
},
user_user1_showProviderClientVaultPrivacyBanner_acBannersDismissed: true,
user_user2_showProviderClientVaultPrivacyBanner_acBannersDismissed: true,
});
expect(output).toEqual({
global_account_accounts: {
user1: {
email: "user1@email.com",
name: "User 1",
emailVerified: true,
},
user2: {
email: "user2@email.com",
name: "User 2",
emailVerified: true,
},
},
});
});
});
describe("rollback", () => {
it("is irreversible", async () => {
await expect(runMigrator(sut, {}, "rollback")).rejects.toThrow(IRREVERSIBLE);
});
});
});

View File

@@ -0,0 +1,23 @@
import { KeyDefinitionLike, MigrationHelper } from "../migration-helper";
import { IRREVERSIBLE, Migrator } from "../migrator";
export const SHOW_BANNER_KEY: KeyDefinitionLike = {
key: "acBannersDismissed",
stateDefinition: { name: "showProviderClientVaultPrivacyBanner" },
};
export class RemoveAcBannersDismissed extends Migrator<69, 70> {
async migrate(helper: MigrationHelper): Promise<void> {
await Promise.all(
(await helper.getAccounts()).map(async ({ userId }) => {
if (helper.getFromUser(userId, SHOW_BANNER_KEY) != null) {
await helper.removeFromUser(userId, SHOW_BANNER_KEY);
}
}),
);
}
async rollback(helper: MigrationHelper): Promise<void> {
throw IRREVERSIBLE;
}
}