/home/techb158/balavpn.abdallabala.com/tests
Edit: /home/techb158/balavpn.abdallabala.com/tests/oidc.test.js (2367B)
const assert = require("assert");
const {
getOidcConfig,
generateState,
generateNonce,
decodeJwtPayload,
base64UrlEncode,
stateCookieName,
getCookieExpires,
} = require("../src/lib/oidc");
assert.strictEqual(getOidcConfig(), null, "getOidcConfig returns null when SSO is disabled");
const input = Buffer.from("hello");
const encoded = base64UrlEncode(input);
assert.ok(typeof encoded === "string");
assert.ok(!encoded.includes("+"));
assert.ok(!encoded.includes("/"));
assert.ok(!encoded.includes("="));
const state = generateState();
assert.strictEqual(typeof state, "string");
assert.ok(state.length > 10);
const nonce = generateNonce();
assert.strictEqual(typeof nonce, "string");
assert.ok(nonce.length > 10);
const jwt = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiZW1haWwiOiJ1c2VyQGV4YW1wbGUuY29tIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
const claims = decodeJwtPayload(jwt);
assert.strictEqual(claims.sub, "1234567890");
assert.strictEqual(claims.email, "user@example.com");
assert.strictEqual(claims.name, "John Doe");
assert.throws(() => decodeJwtPayload("not-a-jwt"), /Invalid JWT/);
assert.throws(() => decodeJwtPayload("part1.part2"), /Invalid JWT/);
assert.strictEqual(stateCookieName(), "cosmic_sso_state");
const expires = getCookieExpires();
assert.ok(expires.includes("GMT") || expires.includes("UTC"));
process.env.COSMIC_SSO_ENABLED = "true";
process.env.COSMIC_OIDC_ISSUER = "https://accounts.example.com";
process.env.COSMIC_OIDC_CLIENT_ID = "client-123";
process.env.COSMIC_OIDC_CLIENT_SECRET = "secret-456";
delete process.env.COSMIC_OIDC_REDIRECT_URL;
const cfg = getOidcConfig();
assert.strictEqual(cfg.issuer, "https://accounts.example.com");
assert.strictEqual(cfg.clientId, "client-123");
assert.strictEqual(cfg.clientSecret, "secret-456");
assert.ok(cfg.redirectUrl.includes("/api/auth/sso/callback"));
process.env.COSMIC_OIDC_REDIRECT_URL = "https://myapp.com/custom-callback";
const cfg2 = getOidcConfig();
assert.strictEqual(cfg2.redirectUrl, "https://myapp.com/custom-callback");
delete process.env.COSMIC_SSO_ENABLED;
delete process.env.COSMIC_OIDC_ISSUER;
delete process.env.COSMIC_OIDC_CLIENT_ID;
delete process.env.COSMIC_OIDC_CLIENT_SECRET;
delete process.env.COSMIC_OIDC_REDIRECT_URL;
console.log("All OIDC tests passed.");