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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user