Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/modules/admin-sso/client.server.test.ts
T

54 lines
2.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { AdminSsoConfigError, isAdminSsoConfigured, readAdminSsoEnv } from "./client.server";
describe("readAdminSsoEnv", () => {
const baseEnv = {
AUTHENTIK_ISSUER_URL: "https://auth.example.test/application/o/toolctrl-admin-panel/",
AUTHENTIK_ADMIN_CLIENT_ID: "toolctrl-admin-panel",
AUTHENTIK_ADMIN_CLIENT_SECRET: "shh",
AUTHENTIK_ADMIN_REDIRECT_URI: "https://admin.example.test/auth/admin/callback",
};
it("returns trimmed values when all required keys are present", () => {
const env = readAdminSsoEnv({ ...baseEnv, AUTHENTIK_ADMIN_POST_LOGOUT_REDIRECT_URI: "https://admin.example.test/admin/login?logged_out=1" });
expect(env.issuerUrl).toBe(baseEnv.AUTHENTIK_ISSUER_URL);
expect(env.clientId).toBe("toolctrl-admin-panel");
expect(env.postLogoutRedirectUri).toBe("https://admin.example.test/admin/login?logged_out=1");
});
it("throws when a required key is missing", () => {
expect(() => readAdminSsoEnv({ ...baseEnv, AUTHENTIK_ADMIN_CLIENT_SECRET: "" })).toThrowError(AdminSsoConfigError);
});
it("lists every missing key in the error message", () => {
try {
readAdminSsoEnv({});
expect.fail("expected throw");
} catch (err) {
expect(err).toBeInstanceOf(AdminSsoConfigError);
const message = (err as Error).message;
expect(message).toContain("AUTHENTIK_ISSUER_URL");
expect(message).toContain("AUTHENTIK_ADMIN_CLIENT_ID");
expect(message).toContain("AUTHENTIK_ADMIN_CLIENT_SECRET");
expect(message).toContain("AUTHENTIK_ADMIN_REDIRECT_URI");
}
});
});
describe("isAdminSsoConfigured", () => {
it("returns true when env is complete", () => {
expect(
isAdminSsoConfigured({
AUTHENTIK_ISSUER_URL: "https://auth.example.test/",
AUTHENTIK_ADMIN_CLIENT_ID: "id",
AUTHENTIK_ADMIN_CLIENT_SECRET: "secret",
AUTHENTIK_ADMIN_REDIRECT_URI: "https://admin.example.test/auth/admin/callback",
})
).toBe(true);
});
it("returns false when env is incomplete", () => {
expect(isAdminSsoConfigured({})).toBe(false);
});
});