Skip to content

Commit c79b540

Browse files
committed
test: Add test coverage
1 parent f241065 commit c79b540

File tree

4 files changed

+69
-1
lines changed

4 files changed

+69
-1
lines changed

lib/utils/exchangeAuthCode.test.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,4 +576,46 @@ describe("exchangeAuthCode", () => {
576576
"refresh",
577577
);
578578
});
579+
580+
it("returns error when persisting tokens to secure storage fails", async () => {
581+
const store = new MemoryStorage();
582+
setActiveStorage(store);
583+
584+
await store.setItems({
585+
[StorageKeys.state]: "state",
586+
[StorageKeys.codeVerifier]: "verifier",
587+
});
588+
589+
const urlParams = new URLSearchParams();
590+
urlParams.append("code", "hello");
591+
urlParams.append("state", "state");
592+
urlParams.append("client_id", "test");
593+
594+
fetchMock.mockResponseOnce(
595+
JSON.stringify({
596+
access_token: "access_token",
597+
refresh_token: "refresh_token",
598+
id_token: "id_token",
599+
}),
600+
);
601+
602+
const setItemsSpy = vi
603+
.spyOn(store, "setItems")
604+
.mockRejectedValue(new Error("Persist failed"));
605+
606+
const result = await exchangeAuthCode({
607+
urlParams,
608+
domain: "http://test.kinde.com",
609+
clientId: "test",
610+
redirectURL: "http://test.kinde.com",
611+
});
612+
613+
expect(setItemsSpy).toHaveBeenCalled();
614+
expect(result).toStrictEqual({
615+
success: false,
616+
error: expect.stringContaining(
617+
"Failed to persist tokens: Error: Persist failed",
618+
),
619+
});
620+
});
579621
});

lib/utils/token/getDecodedToken.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,13 @@ describe("getDecodedTokenSync", () => {
6262
const t = getDecodedTokenSync("accessToken");
6363
expect(t?.org_code).toBe("org_123456789");
6464
});
65+
66+
it("using an async storage in sync mode throws an error", () => {
67+
const storage = new MemoryStorage();
68+
storage.asyncStore = true;
69+
setActiveStorage(storage);
70+
expect(() => getDecodedTokenSync("accessToken")).toThrow(
71+
"Active storage is async-only. Use the async helpers.",
72+
);
73+
});
6574
});

lib/utils/token/getRawToken.test.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { describe, expect, it, beforeEach } from "vitest";
22
import { getRawToken, getRawTokenSync } from "./getRawToken";
33
import { MemoryStorage, StorageKeys } from "../../sessionManager";
4-
import { setActiveStorage } from ".";
4+
import { clearActiveStorage, setActiveStorage } from ".";
55
import { createMockAccessToken } from "./testUtils";
66

77
describe("getRawToken", () => {
@@ -59,6 +59,7 @@ describe("getRawToken accessToken", () => {
5959

6060
describe("getRawTokenSync", () => {
6161
it("returns null when no active storage is defined", () => {
62+
clearActiveStorage();
6263
expect(getRawTokenSync("idToken")).toBe(null);
6364
});
6465

@@ -69,4 +70,13 @@ describe("getRawTokenSync", () => {
6970
storage.setSessionItem(StorageKeys.accessToken, mockedToken);
7071
expect(getRawTokenSync("accessToken")).toBe(mockedToken);
7172
});
73+
74+
it("using an async storage in sync mode throws an error", () => {
75+
const storage = new MemoryStorage();
76+
storage.asyncStore = true;
77+
setActiveStorage(storage);
78+
expect(() => getRawTokenSync()).toThrow(
79+
"Active storage is async-only. Use the async helpers.",
80+
);
81+
});
7282
});

lib/utils/token/getRoles.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,4 +381,11 @@ describe("getRolesSync", () => {
381381
const roles = getRolesSync();
382382
expect(roles).toStrictEqual([{ id: "1", key: "admin", name: "Admin" }]);
383383
});
384+
385+
it("can't forceApi in in sync request", () => {
386+
storage.setSessionItem(StorageKeys.accessToken, null);
387+
expect(() => getRolesSync({ forceApi: true })).toThrow(
388+
"forceApi cannot be used in sync mode",
389+
);
390+
});
384391
});

0 commit comments

Comments
 (0)