1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-19 01:33:33 +00:00
Files
browser/libs/common/src/platform/services/migration-builder.service.spec.ts
Justin Baur 3caa6cb635 [PM-7766] Add clientType to MigrationHelper (#8945)
* Add `clientType` to MigrationHelper

* PM-7766 - Fix migration builder tests to take new clientType into account.

Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>

* PM-7766 - Add client type to migration builder tests.

* PM-7766 - Fix migration-helper.spec tests.

* PM-7766 - Fix migrator.spec.ts

---------

Co-authored-by: Jared Snider <jsnider@bitwarden.com>
2024-04-29 07:28:58 -04:00

105 lines
3.0 KiB
TypeScript

import { mock } from "jest-mock-extended";
import { FakeStorageService } from "../../../spec/fake-storage.service";
import { ClientType } from "../../enums";
import { MigrationHelper } from "../../state-migrations/migration-helper";
import { MigrationBuilderService } from "./migration-builder.service";
describe("MigrationBuilderService", () => {
// All migrations from 10+ should be capable of having a null account object or null global object
const startingStateVersion = 10;
const noAccounts = {
stateVersion: startingStateVersion,
authenticatedAccounts: <string[]>[],
};
const nullAndUndefinedAccounts = {
stateVersion: startingStateVersion,
authenticatedAccounts: ["account1", "account2"],
account1: <object>null,
account2: <object>undefined,
};
const emptyAccountObject = {
stateVersion: startingStateVersion,
authenticatedAccounts: ["account1"],
account1: {},
};
const nullCommonAccountProperties = {
stateVersion: startingStateVersion,
authenticatedAccounts: ["account1"],
account1: {
data: <object>null,
keys: <object>null,
profile: <object>null,
settings: <object>null,
tokens: <object>null,
},
};
const emptyCommonAccountProperties = {
stateVersion: startingStateVersion,
authenticatedAccounts: ["account1"],
account1: {
data: {},
keys: {},
profile: {},
settings: {},
tokens: {},
},
};
const nullGlobal = {
stateVersion: startingStateVersion,
global: <object>null,
};
const undefinedGlobal = {
stateVersion: startingStateVersion,
global: <object>undefined,
};
const emptyGlobalObject = {
stateVersion: startingStateVersion,
global: {},
};
const startingStates = [
{ data: noAccounts, description: "No Accounts" },
{ data: nullAndUndefinedAccounts, description: "Null and Undefined Accounts" },
{ data: emptyAccountObject, description: "Empty Account Object" },
{ data: nullCommonAccountProperties, description: "Null Common Account Properties" },
{ data: emptyCommonAccountProperties, description: "Empty Common Account Properties" },
{ data: nullGlobal, description: "Null Global" },
{ data: undefinedGlobal, description: "Undefined Global" },
{ data: emptyGlobalObject, description: "Empty Global Object" },
];
const clientTypes = Object.values(ClientType);
// Generate all possible test cases
const testCases = startingStates.flatMap((startingState) =>
clientTypes.map((clientType) => ({ startingState, clientType })),
);
it.each(testCases)(
"should not produce migrations that throw when given $startingState.description for client $clientType",
async ({ startingState, clientType }) => {
const sut = new MigrationBuilderService();
const helper = new MigrationHelper(
startingStateVersion,
new FakeStorageService(startingState),
mock(),
"general",
clientType,
);
await sut.build().migrate(helper);
},
);
});