Skip to content

Commit

Permalink
[PM-4273] Add tests for TotpService (#7058)
Browse files Browse the repository at this point in the history
Adds tests for the TOTP service in preparation for migrating it to the SDK.
  • Loading branch information
Hinton authored Dec 5, 2023
1 parent 7bbdee9 commit 2eebf89
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions libs/common/src/vault/services/totp.service.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import { mock } from "jest-mock-extended";

import { LogService } from "../../platform/abstractions/log.service";
import { WebCryptoFunctionService } from "../../platform/services/web-crypto-function.service";

import { TotpService } from "./totp.service";

describe("TotpService", () => {
let totpService: TotpService;

const logService = mock<LogService>();

beforeEach(() => {
totpService = new TotpService(new WebCryptoFunctionService(global), logService);

// TOTP is time-based, so we need to mock the current time
jest.useFakeTimers({
now: new Date("2023-01-01T00:00:00.000Z"),
});
});

afterEach(() => {
jest.clearAllMocks();
jest.useRealTimers();
});

it("should return null if key is null", async () => {
const result = await totpService.getCode(null);
expect(result).toBeNull();
});

it("should return a code if key is not null", async () => {
const result = await totpService.getCode("WQIQ25BRKZYCJVYP");
expect(result).toBe("194506");
});

it("should handle otpauth keys", async () => {
const key = "otpauth://totp/test-account?secret=WQIQ25BRKZYCJVYP";
const result = await totpService.getCode(key);
expect(result).toBe("194506");

const period = totpService.getTimeInterval(key);
expect(period).toBe(30);
});

it("should handle otpauth different period", async () => {
const key = "otpauth://totp/test-account?secret=WQIQ25BRKZYCJVYP&period=60";
const result = await totpService.getCode(key);
expect(result).toBe("730364");

const period = totpService.getTimeInterval(key);
expect(period).toBe(60);
});

it("should handle steam keys", async () => {
const key = "steam://HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ";
const result = await totpService.getCode(key);
expect(result).toBe("7W6CJ");

const period = totpService.getTimeInterval(key);
expect(period).toBe(30);
});
});

0 comments on commit 2eebf89

Please sign in to comment.