mirror of
https://github.com/bitwarden/browser
synced 2025-12-21 10:43:35 +00:00
Refactor environment service to emit a single observable. This required significant changes to how the environment service behaves and tackles much of the tech debt planned for it.
165 lines
3.9 KiB
TypeScript
165 lines
3.9 KiB
TypeScript
import { runMigrator } from "../migration-helper.spec";
|
|
|
|
import { MergeEnvironmentState } from "./45-merge-environment-state";
|
|
|
|
describe("MergeEnvironmentState", () => {
|
|
const migrator = new MergeEnvironmentState(44, 45);
|
|
|
|
it("can migrate all data", async () => {
|
|
const output = await runMigrator(migrator, {
|
|
authenticatedAccounts: ["user1", "user2"],
|
|
global: {
|
|
extra: "data",
|
|
},
|
|
global_environment_region: "US",
|
|
global_environment_urls: {
|
|
base: "example.com",
|
|
},
|
|
user1: {
|
|
extra: "data",
|
|
settings: {
|
|
extra: "data",
|
|
},
|
|
},
|
|
user2: {
|
|
extra: "data",
|
|
settings: {
|
|
extra: "data",
|
|
},
|
|
},
|
|
extra: "data",
|
|
user_user1_environment_region: "US",
|
|
user_user2_environment_region: "EU",
|
|
user_user1_environment_urls: {
|
|
base: "example.com",
|
|
},
|
|
user_user2_environment_urls: {
|
|
base: "other.example.com",
|
|
},
|
|
});
|
|
|
|
expect(output).toEqual({
|
|
authenticatedAccounts: ["user1", "user2"],
|
|
global: {
|
|
extra: "data",
|
|
},
|
|
global_environment_environment: {
|
|
region: "US",
|
|
urls: {
|
|
base: "example.com",
|
|
},
|
|
},
|
|
user1: {
|
|
extra: "data",
|
|
settings: {
|
|
extra: "data",
|
|
},
|
|
},
|
|
user2: {
|
|
extra: "data",
|
|
settings: {
|
|
extra: "data",
|
|
},
|
|
},
|
|
extra: "data",
|
|
user_user1_environment_environment: {
|
|
region: "US",
|
|
urls: {
|
|
base: "example.com",
|
|
},
|
|
},
|
|
user_user2_environment_environment: {
|
|
region: "EU",
|
|
urls: {
|
|
base: "other.example.com",
|
|
},
|
|
},
|
|
});
|
|
});
|
|
|
|
it("handles missing parts", async () => {
|
|
const output = await runMigrator(migrator, {
|
|
authenticatedAccounts: ["user1", "user2"],
|
|
global: {
|
|
extra: "data",
|
|
},
|
|
user1: {
|
|
extra: "data",
|
|
settings: {
|
|
extra: "data",
|
|
},
|
|
},
|
|
user2: null,
|
|
});
|
|
|
|
expect(output).toEqual({
|
|
authenticatedAccounts: ["user1", "user2"],
|
|
global: {
|
|
extra: "data",
|
|
},
|
|
user1: {
|
|
extra: "data",
|
|
settings: {
|
|
extra: "data",
|
|
},
|
|
},
|
|
user2: null,
|
|
});
|
|
});
|
|
|
|
it("can migrate only global data", async () => {
|
|
const output = await runMigrator(migrator, {
|
|
authenticatedAccounts: [],
|
|
global_environment_region: "Self-Hosted",
|
|
global: {},
|
|
});
|
|
|
|
expect(output).toEqual({
|
|
authenticatedAccounts: [],
|
|
global_environment_environment: {
|
|
region: "Self-Hosted",
|
|
urls: undefined,
|
|
},
|
|
global: {},
|
|
});
|
|
});
|
|
|
|
it("can migrate only user state", async () => {
|
|
const output = await runMigrator(migrator, {
|
|
authenticatedAccounts: ["user1"] as const,
|
|
global: null,
|
|
user1: { settings: {} },
|
|
user_user1_environment_region: "Self-Hosted",
|
|
user_user1_environment_urls: {
|
|
base: "some-base-url",
|
|
api: "some-api-url",
|
|
identity: "some-identity-url",
|
|
icons: "some-icons-url",
|
|
notifications: "some-notifications-url",
|
|
events: "some-events-url",
|
|
webVault: "some-webVault-url",
|
|
keyConnector: "some-keyConnector-url",
|
|
},
|
|
});
|
|
|
|
expect(output).toEqual({
|
|
authenticatedAccounts: ["user1"] as const,
|
|
global: null,
|
|
user1: { settings: {} },
|
|
user_user1_environment_environment: {
|
|
region: "Self-Hosted",
|
|
urls: {
|
|
base: "some-base-url",
|
|
api: "some-api-url",
|
|
identity: "some-identity-url",
|
|
icons: "some-icons-url",
|
|
notifications: "some-notifications-url",
|
|
events: "some-events-url",
|
|
webVault: "some-webVault-url",
|
|
keyConnector: "some-keyConnector-url",
|
|
},
|
|
},
|
|
});
|
|
});
|
|
});
|