2022-10-10 17:19:01 +02:00
|
|
|
// eslint-disable-next-line no-restricted-imports
|
2022-08-30 16:19:09 +02:00
|
|
|
import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute";
|
|
|
|
import { BehaviorSubject, firstValueFrom } from "rxjs";
|
|
|
|
|
2022-09-02 03:15:19 +02:00
|
|
|
import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service";
|
2022-08-30 16:19:09 +02:00
|
|
|
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
|
|
|
|
import { ContainerService } from "@bitwarden/common/services/container.service";
|
|
|
|
import { SettingsService } from "@bitwarden/common/services/settings.service";
|
|
|
|
import { StateService } from "@bitwarden/common/services/state.service";
|
|
|
|
|
|
|
|
describe("SettingsService", () => {
|
|
|
|
let settingsService: SettingsService;
|
|
|
|
|
|
|
|
let cryptoService: SubstituteOf<CryptoService>;
|
2022-09-02 03:15:19 +02:00
|
|
|
let encryptService: SubstituteOf<AbstractEncryptService>;
|
2022-08-30 16:19:09 +02:00
|
|
|
let stateService: SubstituteOf<StateService>;
|
|
|
|
let activeAccount: BehaviorSubject<string>;
|
|
|
|
let activeAccountUnlocked: BehaviorSubject<boolean>;
|
|
|
|
|
|
|
|
beforeEach(() => {
|
|
|
|
cryptoService = Substitute.for();
|
2022-09-02 03:15:19 +02:00
|
|
|
encryptService = Substitute.for();
|
2022-08-30 16:19:09 +02:00
|
|
|
stateService = Substitute.for();
|
|
|
|
activeAccount = new BehaviorSubject("123");
|
|
|
|
activeAccountUnlocked = new BehaviorSubject(true);
|
|
|
|
|
|
|
|
stateService.getSettings().resolves({ equivalentDomains: [["test"], ["domains"]] });
|
|
|
|
stateService.activeAccount$.returns(activeAccount);
|
|
|
|
stateService.activeAccountUnlocked$.returns(activeAccountUnlocked);
|
2022-09-02 03:15:19 +02:00
|
|
|
(window as any).bitwardenContainerService = new ContainerService(cryptoService, encryptService);
|
2022-08-30 16:19:09 +02:00
|
|
|
|
|
|
|
settingsService = new SettingsService(stateService);
|
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(() => {
|
|
|
|
activeAccount.complete();
|
|
|
|
activeAccountUnlocked.complete();
|
|
|
|
});
|
|
|
|
|
|
|
|
describe("getEquivalentDomains", () => {
|
|
|
|
it("returns value", async () => {
|
|
|
|
const result = await firstValueFrom(settingsService.settings$);
|
|
|
|
|
|
|
|
expect(result).toEqual({
|
|
|
|
equivalentDomains: [["test"], ["domains"]],
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it("setEquivalentDomains", async () => {
|
|
|
|
await settingsService.setEquivalentDomains([["test2"], ["domains2"]]);
|
|
|
|
|
|
|
|
stateService.received(1).setSettings(Arg.any());
|
|
|
|
|
|
|
|
expect((await firstValueFrom(settingsService.settings$)).equivalentDomains).toEqual([
|
|
|
|
["test2"],
|
|
|
|
["domains2"],
|
|
|
|
]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("clear", async () => {
|
|
|
|
await settingsService.clear();
|
|
|
|
|
|
|
|
stateService.received(1).setSettings(Arg.any(), Arg.any());
|
|
|
|
|
|
|
|
expect(await firstValueFrom(settingsService.settings$)).toEqual({});
|
|
|
|
});
|
|
|
|
});
|