import { describe, expect, it } from "vitest"; import { Result } from "effect"; import { decodeAuthCookieEither, decodeAuthCookieOrNull, decodeAuthCookieOrThrow, } from "$lib/Effect/authCookie"; describe("decodeAuthCookie", () => { it("decodes a valid user cookie payload", () => { const payload = JSON.stringify({ token_type: "Bearer", expires_in: 3600, access_token: "access-token", refresh_token: "refresh-token", }); const decoded = decodeAuthCookieEither(payload); expect(Result.isSuccess(decoded)).toBe(true); if (Result.isSuccess(decoded)) expect(decoded.success).toEqual({ tokenType: "Bearer", expiresIn: 3600, accessToken: "access-token", refreshToken: "refresh-token", }); }); it("returns a left when cookie JSON is invalid", () => { const decoded = decodeAuthCookieEither("{oops"); expect(Result.isFailure(decoded)).toBe(true); }); it("returns a left when required fields are missing", () => { const payload = JSON.stringify({ token_type: "Bearer", }); const decoded = decodeAuthCookieEither(payload); expect(Result.isFailure(decoded)).toBe(true); }); it("throws on invalid payload through decodeAuthCookieOrThrow", () => { expect(() => decodeAuthCookieOrThrow("{oops")).toThrowError(); }); it("returns null on invalid payload through decodeAuthCookieOrNull", () => { expect(decodeAuthCookieOrNull("{oops")).toBeNull(); }); it("returns null for schema-valid but empty auth fields", () => { expect( decodeAuthCookieOrNull( JSON.stringify({ token_type: "Bearer", expires_in: 3600, access_token: "", refresh_token: "", }), ), ).toBeNull(); }); });