diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index 21552f4de0b..a76050fe44f 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -726,7 +726,7 @@ import { AbstractThemingService } from "./theming/theming.service.abstraction"; useClass: DefaultActiveUserStateProvider, deps: [ // TODO: Do other storage services - StateServiceAbstraction, + AccountServiceAbstraction, EncryptService, MEMORY_STORAGE, AbstractStorageService, diff --git a/libs/common/src/platform/services/default-active-user-state.provider.spec.ts b/libs/common/src/platform/services/default-active-user-state.provider.spec.ts index 34e861d0004..ed0e12cb946 100644 --- a/libs/common/src/platform/services/default-active-user-state.provider.spec.ts +++ b/libs/common/src/platform/services/default-active-user-state.provider.spec.ts @@ -2,7 +2,9 @@ import { matches, mock, mockReset } from "jest-mock-extended"; import { BehaviorSubject } from "rxjs"; import { Jsonify } from "type-fest"; -import { StateService } from "../abstractions/state.service"; +import { AccountInfo, AccountService } from "../../auth/abstractions/account.service"; +import { AuthenticationStatus } from "../../auth/enums/authentication-status"; +import { UserId } from "../../types/guid"; import { AbstractMemoryStorageService } from "../abstractions/storage.service"; import { KeyDefinition } from "../types/key-definition"; import { StateDefinition } from "../types/state-definition"; @@ -15,10 +17,13 @@ class TestState { // TODO: More complex data types static fromJSON(jsonState: Jsonify) { - const state = new TestState(); - state.date = new Date(jsonState.date); - state.array = jsonState.array; - return state; + if (jsonState == null) { + return null; + } + + return Object.assign(new TestState(), jsonState, { + date: new Date(jsonState.date), + }); } } @@ -31,23 +36,23 @@ const testKeyDefinition = new KeyDefinition( ); describe("DefaultStateProvider", () => { - const stateService = mock(); + const accountService = mock(); const memoryStorageService = mock(); const diskStorageService = mock(); - const activeAccountSubject = new BehaviorSubject(undefined); + const activeAccountSubject = new BehaviorSubject<{ id: UserId } & AccountInfo>(undefined); let activeUserStateProvider: DefaultActiveUserStateProvider; beforeEach(() => { - mockReset(stateService); + mockReset(accountService); mockReset(memoryStorageService); mockReset(diskStorageService); - stateService.activeAccount$ = activeAccountSubject; + accountService.activeAccount$ = activeAccountSubject; activeUserStateProvider = new DefaultActiveUserStateProvider( - stateService, + accountService, null, // Not testing derived state null, // Not testing memory storage diskStorageService, @@ -56,11 +61,11 @@ describe("DefaultStateProvider", () => { }); it("createUserState", async () => { - diskStorageService.get.mockImplementation(async (key, options) => { - if (key == "fake_1") { - return { date: "2023-09-21T13:14:17.648Z", array: ["value1", "value2"] }; - } - return undefined; + diskStorageService.get.mockImplementationOnce(() => { + return Promise.resolve({ + date: "2023-09-21T13:14:17.648Z", + array: ["value1", "value2"], + } as Jsonify); }); const fakeDomainState = activeUserStateProvider.create(testKeyDefinition); @@ -69,7 +74,12 @@ describe("DefaultStateProvider", () => { const subscription = fakeDomainState.state$.subscribe(subscribeCallback); // User signs in - activeAccountSubject.next("1"); + activeAccountSubject.next({ + id: "1" as UserId, + email: "useremail", + name: "username", + status: AuthenticationStatus.Locked, + }); await new Promise((resolve) => setTimeout(resolve, 10)); // Service does an update