Files
toknd_auth/tests/core/TokenManager.test.ts
T
ramvignesh-b b258ee0a07
CI / build (pull_request) Successful in 22s
test: centralize redis mock in test setup
2026-05-11 17:28:08 +05:30

77 lines
2.3 KiB
TypeScript

// @ts-nocheck
import { describe, expect, it, mock } from "bun:test";
import { TokenManager } from "../../src/core/TokenManager";
describe("TokenManager", () => {
it("should return token from redis if available", async () => {
const redis = { get: mock(() => Promise.resolve("active-access-token")) };
const manager = new TokenManager(redis, {});
const token = await manager.getAccessToken("trakt");
expect(token).toBe("active-access-token");
});
it("should refresh token if access token is missing but refresh token exists", async () => {
const redis = {
get: mock((key) => Promise.resolve(key.includes("refresh") ? "valid-refresh-token" : null)),
set: mock(() => Promise.resolve()),
};
const provider = {
refreshToken: mock(() =>
Promise.resolve({
accessToken: "newly-refreshed-access-token",
refreshToken: "newly-refreshed-refresh-token",
expiresIn: 3600,
}),
),
};
const manager = new TokenManager(redis, provider);
const token = await manager.getAccessToken("trakt");
expect(token).toBe("newly-refreshed-access-token");
expect(redis.set).toHaveBeenCalled();
});
it("should return null if no tokens are found", async () => {
const redis = { get: mock(() => Promise.resolve(null)) };
const manager = new TokenManager(redis, {});
const token = await manager.getAccessToken("trakt");
expect(token).toBeNull();
});
it("should refresh token via refreshAccessToken", async () => {
const redis = {
get: mock(() => Promise.resolve("existing-refresh-token")),
set: mock(() => Promise.resolve()),
};
const provider = {
refreshToken: mock(() =>
Promise.resolve({
accessToken: "manually-refreshed-access-token",
refreshToken: "manually-refreshed-refresh-token",
expiresIn: 3600,
}),
),
};
const manager = new TokenManager(redis, provider);
const token = await manager.refreshAccessToken("trakt");
expect(token).toBe("manually-refreshed-access-token");
expect(provider.refreshToken).toHaveBeenCalledWith("existing-refresh-token");
});
it("should return null in refreshAccessToken if no refresh token is found", async () => {
const redis = { get: mock(() => Promise.resolve(null)) };
const manager = new TokenManager(redis, {});
const token = await manager.refreshAccessToken("trakt");
expect(token).toBeNull();
});
});