import { describe, it, expect, afterEach } from "vitest" import { getAccessToken, getAccessTokenExpMs, getRefreshToken, setAccessToken, setTokens, clearTokens, } from "./tokenProvider" afterEach(() => clearTokens()) describe("tokenProvider", () => { it("기본값은 null (쿠키 모드)", () => { expect(getAccessToken()).toBeNull() expect(getRefreshToken()).toBeNull() expect(getAccessTokenExpMs()).toBeNull() }) it("setAccessToken 하면 그 토큰을 돌려준다 (하위호환)", () => { setAccessToken("abc") expect(getAccessToken()).toBe("abc") }) it("null 로 다시 초기화 가능", () => { setAccessToken("abc") setAccessToken(null) expect(getAccessToken()).toBeNull() }) it("setTokens 는 access·refresh·만료를 저장하고 localStorage 에 영속", () => { setTokens({ token: "a", refreshToken: "r", tokenExpirationTime: 1_700_000_000 }) expect(getAccessToken()).toBe("a") expect(getRefreshToken()).toBe("r") expect(getAccessTokenExpMs()).toBe(1_700_000_000_000) expect(JSON.parse(localStorage.getItem("ca.tokens") ?? "{}")).toMatchObject({ token: "a", refreshToken: "r", }) }) it("clearTokens 는 메모리·localStorage 둘 다 비움", () => { setTokens({ token: "a", refreshToken: "r" }) clearTokens() expect(getAccessToken()).toBeNull() expect(localStorage.getItem("ca.tokens")).toBeNull() }) it("setAccessToken 은 refresh 토큰을 유지한다", () => { setTokens({ token: "a", refreshToken: "r" }) setAccessToken("b") expect(getAccessToken()).toBe("b") expect(getRefreshToken()).toBe("r") }) })