fix(auth): make diagnostics match runtime safety

This commit is contained in:
2026-08-17 11:23:52 +02:00
parent f0ae680671
commit 7cfbee36fa
14 changed files with 619 additions and 99 deletions
+15 -3
View File
@@ -1,6 +1,12 @@
import { createSign, generateKeyPairSync } from "node:crypto";
import { expect, test } from "vitest";
import { createOidcProtocol, OidcJwksUnavailableError, OidcProtocolError, OidcProviderUnavailableError } from "../src/auth/oidc-client.js";
import {
createOidcProtocol,
OidcIssuerMismatchError,
OidcJwksUnavailableError,
OidcProtocolError,
OidcProviderUnavailableError,
} from "../src/auth/oidc-client.js";
const issuer = "https://issuer.example.test";
const clientId = "thothii";
@@ -284,8 +290,14 @@ test("rejects non-HTTPS issuer configuration and a discovery issuer mismatch", a
issuer: "http://issuer.example.test", clientId, clientSecret: "secret", callbackUrl,
scopes: ["openid"], groupsClaim: "groups",
})).toThrow(OidcProtocolError);
await expect(protocol({ discoveryIssuer: "https://other.example.test" }).authorizationUrl({ state, nonce, codeVerifier: verifier }))
.rejects.toThrow(OidcProtocolError);
try {
await protocol({ discoveryIssuer: "https://other.example.test" })
.authorizationUrl({ state, nonce, codeVerifier: verifier });
throw new Error("issuer mismatch unexpectedly accepted");
} catch (error) {
expect(error).toBeInstanceOf(OidcIssuerMismatchError);
expect((error as Error).message).toBe("oidc_issuer_mismatch");
}
});
test.each([