mirror of
https://github.com/bitwarden/browser
synced 2025-12-10 13:23:34 +00:00
Use FakeStateProvider in SdkService tests (#16126)
This commit is contained in:
@@ -6,8 +6,13 @@ import { BehaviorSubject, firstValueFrom, of } from "rxjs";
|
|||||||
import { KdfConfigService, KeyService, PBKDF2KdfConfig } from "@bitwarden/key-management";
|
import { KdfConfigService, KeyService, PBKDF2KdfConfig } from "@bitwarden/key-management";
|
||||||
import { BitwardenClient } from "@bitwarden/sdk-internal";
|
import { BitwardenClient } from "@bitwarden/sdk-internal";
|
||||||
|
|
||||||
import { ObservableTracker } from "../../../../spec";
|
import {
|
||||||
import { AccountInfo, AccountService } from "../../../auth/abstractions/account.service";
|
FakeAccountService,
|
||||||
|
FakeStateProvider,
|
||||||
|
mockAccountServiceWith,
|
||||||
|
ObservableTracker,
|
||||||
|
} from "../../../../spec";
|
||||||
|
import { AccountInfo } from "../../../auth/abstractions/account.service";
|
||||||
import { EncryptedString } from "../../../key-management/crypto/models/enc-string";
|
import { EncryptedString } from "../../../key-management/crypto/models/enc-string";
|
||||||
import { UserId } from "../../../types/guid";
|
import { UserId } from "../../../types/guid";
|
||||||
import { UserKey } from "../../../types/key";
|
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 { SdkLoadService } from "../../abstractions/sdk/sdk-load.service";
|
||||||
import { UserNotLoggedInError } from "../../abstractions/sdk/sdk.service";
|
import { UserNotLoggedInError } from "../../abstractions/sdk/sdk.service";
|
||||||
import { Rc } from "../../misc/reference-counting/rc";
|
import { Rc } from "../../misc/reference-counting/rc";
|
||||||
|
import { Utils } from "../../misc/utils";
|
||||||
import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key";
|
import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key";
|
||||||
|
|
||||||
import { DefaultSdkService } from "./default-sdk.service";
|
import { DefaultSdkService } from "./default-sdk.service";
|
||||||
@@ -33,10 +39,11 @@ describe("DefaultSdkService", () => {
|
|||||||
let sdkClientFactory!: MockProxy<SdkClientFactory>;
|
let sdkClientFactory!: MockProxy<SdkClientFactory>;
|
||||||
let environmentService!: MockProxy<EnvironmentService>;
|
let environmentService!: MockProxy<EnvironmentService>;
|
||||||
let platformUtilsService!: MockProxy<PlatformUtilsService>;
|
let platformUtilsService!: MockProxy<PlatformUtilsService>;
|
||||||
let accountService!: MockProxy<AccountService>;
|
|
||||||
let kdfConfigService!: MockProxy<KdfConfigService>;
|
let kdfConfigService!: MockProxy<KdfConfigService>;
|
||||||
let keyService!: MockProxy<KeyService>;
|
let keyService!: MockProxy<KeyService>;
|
||||||
let service!: DefaultSdkService;
|
let service!: DefaultSdkService;
|
||||||
|
let accountService!: FakeAccountService;
|
||||||
|
let fakeStateProvider!: FakeStateProvider;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await new TestSdkLoadService().loadAndInit();
|
await new TestSdkLoadService().loadAndInit();
|
||||||
@@ -44,9 +51,11 @@ describe("DefaultSdkService", () => {
|
|||||||
sdkClientFactory = mock<SdkClientFactory>();
|
sdkClientFactory = mock<SdkClientFactory>();
|
||||||
environmentService = mock<EnvironmentService>();
|
environmentService = mock<EnvironmentService>();
|
||||||
platformUtilsService = mock<PlatformUtilsService>();
|
platformUtilsService = mock<PlatformUtilsService>();
|
||||||
accountService = mock<AccountService>();
|
|
||||||
kdfConfigService = mock<KdfConfigService>();
|
kdfConfigService = mock<KdfConfigService>();
|
||||||
keyService = mock<KeyService>();
|
keyService = mock<KeyService>();
|
||||||
|
const mockUserId = Utils.newGuid() as UserId;
|
||||||
|
accountService = mockAccountServiceWith(mockUserId);
|
||||||
|
fakeStateProvider = new FakeStateProvider(accountService);
|
||||||
|
|
||||||
// Can't use `of(mock<Environment>())` for some reason
|
// Can't use `of(mock<Environment>())` for some reason
|
||||||
environmentService.environment$ = new BehaviorSubject(mock<Environment>());
|
environmentService.environment$ = new BehaviorSubject(mock<Environment>());
|
||||||
@@ -58,6 +67,7 @@ describe("DefaultSdkService", () => {
|
|||||||
accountService,
|
accountService,
|
||||||
kdfConfigService,
|
kdfConfigService,
|
||||||
keyService,
|
keyService,
|
||||||
|
fakeStateProvider,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -219,5 +229,9 @@ describe("DefaultSdkService", () => {
|
|||||||
function createMockClient(): MockProxy<BitwardenClient> {
|
function createMockClient(): MockProxy<BitwardenClient> {
|
||||||
const client = mock<BitwardenClient>();
|
const client = mock<BitwardenClient>();
|
||||||
client.crypto.mockReturnValue(mock());
|
client.crypto.mockReturnValue(mock());
|
||||||
|
client.platform.mockReturnValue({
|
||||||
|
state: jest.fn().mockReturnValue(mock()),
|
||||||
|
free: mock(),
|
||||||
|
});
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ export class DefaultSdkService implements SdkService {
|
|||||||
private accountService: AccountService,
|
private accountService: AccountService,
|
||||||
private kdfConfigService: KdfConfigService,
|
private kdfConfigService: KdfConfigService,
|
||||||
private keyService: KeyService,
|
private keyService: KeyService,
|
||||||
private stateProvider?: StateProvider,
|
private stateProvider: StateProvider,
|
||||||
private userAgent: string | null = null,
|
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
|
// Initialize the SDK managed database and the client managed repositories.
|
||||||
if (this.stateProvider) {
|
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 {
|
private toSettings(env: Environment): ClientSettings {
|
||||||
|
|||||||
Reference in New Issue
Block a user