54 lines
2.1 KiB
TypeScript
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);
|
|
});
|
|
});
|