1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-16 08:13:42 +00:00

[PM-17635] [PM-18601] Simplifying mocking and usage of the sdk (#14287)

* feat: add our own custom deep mocker

* feat: use new mock service in totp tests

* feat: implement userClient mocking

* chore: move mock files

* feat: replace existing manual sdkService mocking

* chore: rename to 'client'

* chore: improve docs

* feat: refactor sdkService to never return undefined BitwardenClient
This commit is contained in:
Andreas Coroiu
2025-05-28 15:00:30 +02:00
committed by GitHub
parent 4fcc4793bb
commit d1fb37d696
9 changed files with 444 additions and 54 deletions

View File

@@ -1,38 +1,27 @@
import { mock } from "jest-mock-extended";
import { of, take } from "rxjs";
import { take } from "rxjs";
import { BitwardenClient, TotpResponse } from "@bitwarden/sdk-internal";
import { TotpResponse } from "@bitwarden/sdk-internal";
import { SdkService } from "../../platform/abstractions/sdk/sdk.service";
import { MockSdkService } from "../../platform/spec/mock-sdk.service";
import { TotpService } from "./totp.service";
describe("TotpService", () => {
let totpService: TotpService;
let generateTotpMock: jest.Mock;
const sdkService = mock<SdkService>();
let totpService!: TotpService;
let sdkService!: MockSdkService;
beforeEach(() => {
generateTotpMock = jest
.fn()
.mockReturnValueOnce({
sdkService = new MockSdkService();
sdkService.client.vault
.mockDeep()
.totp.mockDeep()
.generate_totp.mockReturnValueOnce({
code: "123456",
period: 30,
})
.mockReturnValueOnce({ code: "654321", period: 30 })
.mockReturnValueOnce({ code: "567892", period: 30 });
const mockBitwardenClient = {
vault: () => ({
totp: () => ({
generate_totp: generateTotpMock,
}),
}),
};
sdkService.client$ = of(mockBitwardenClient as unknown as BitwardenClient);
totpService = new TotpService(sdkService);
// TOTP is time-based, so we need to mock the current time