diff --git a/libs/common/src/platform/services/sdk/default-sdk.service.spec.ts b/libs/common/src/platform/services/sdk/default-sdk.service.spec.ts index 17d98159c41..30b43bfe00a 100644 --- a/libs/common/src/platform/services/sdk/default-sdk.service.spec.ts +++ b/libs/common/src/platform/services/sdk/default-sdk.service.spec.ts @@ -6,8 +6,13 @@ import { BehaviorSubject, firstValueFrom, of } from "rxjs"; import { KdfConfigService, KeyService, PBKDF2KdfConfig } from "@bitwarden/key-management"; import { BitwardenClient } from "@bitwarden/sdk-internal"; -import { ObservableTracker } from "../../../../spec"; -import { AccountInfo, AccountService } from "../../../auth/abstractions/account.service"; +import { + FakeAccountService, + FakeStateProvider, + mockAccountServiceWith, + ObservableTracker, +} from "../../../../spec"; +import { AccountInfo } from "../../../auth/abstractions/account.service"; import { EncryptedString } from "../../../key-management/crypto/models/enc-string"; import { UserId } from "../../../types/guid"; import { UserKey } from "../../../types/key"; @@ -17,6 +22,7 @@ import { SdkClientFactory } from "../../abstractions/sdk/sdk-client-factory"; import { SdkLoadService } from "../../abstractions/sdk/sdk-load.service"; import { UserNotLoggedInError } from "../../abstractions/sdk/sdk.service"; import { Rc } from "../../misc/reference-counting/rc"; +import { Utils } from "../../misc/utils"; import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key"; import { DefaultSdkService } from "./default-sdk.service"; @@ -33,10 +39,11 @@ describe("DefaultSdkService", () => { let sdkClientFactory!: MockProxy; let environmentService!: MockProxy; let platformUtilsService!: MockProxy; - let accountService!: MockProxy; let kdfConfigService!: MockProxy; let keyService!: MockProxy; let service!: DefaultSdkService; + let accountService!: FakeAccountService; + let fakeStateProvider!: FakeStateProvider; beforeEach(async () => { await new TestSdkLoadService().loadAndInit(); @@ -44,9 +51,11 @@ describe("DefaultSdkService", () => { sdkClientFactory = mock(); environmentService = mock(); platformUtilsService = mock(); - accountService = mock(); kdfConfigService = mock(); keyService = mock(); + const mockUserId = Utils.newGuid() as UserId; + accountService = mockAccountServiceWith(mockUserId); + fakeStateProvider = new FakeStateProvider(accountService); // Can't use `of(mock())` for some reason environmentService.environment$ = new BehaviorSubject(mock()); @@ -58,6 +67,7 @@ describe("DefaultSdkService", () => { accountService, kdfConfigService, keyService, + fakeStateProvider, ); }); @@ -219,5 +229,9 @@ describe("DefaultSdkService", () => { function createMockClient(): MockProxy { const client = mock(); client.crypto.mockReturnValue(mock()); + client.platform.mockReturnValue({ + state: jest.fn().mockReturnValue(mock()), + free: mock(), + }); return client; } diff --git a/libs/common/src/platform/services/sdk/default-sdk.service.ts b/libs/common/src/platform/services/sdk/default-sdk.service.ts index 4359f03a17f..629d7dafed5 100644 --- a/libs/common/src/platform/services/sdk/default-sdk.service.ts +++ b/libs/common/src/platform/services/sdk/default-sdk.service.ts @@ -84,7 +84,7 @@ export class DefaultSdkService implements SdkService { private accountService: AccountService, private kdfConfigService: KdfConfigService, private keyService: KeyService, - private stateProvider?: StateProvider, + private stateProvider: StateProvider, private userAgent: string | null = null, ) {} @@ -246,11 +246,8 @@ export class DefaultSdkService implements SdkService { ), }); - // This is optional to avoid having to mock it on the tests - if (this.stateProvider) { - // Initialize the SDK managed database and the client managed repositories. - await initializeState(userId, client.platform().state(), this.stateProvider); - } + // Initialize the SDK managed database and the client managed repositories. + await initializeState(userId, client.platform().state(), this.stateProvider); } private toSettings(env: Environment): ClientSettings {