19 lines
653 B
JavaScript
19 lines
653 B
JavaScript
import assert from "node:assert/strict";
|
|
import { webcrypto } from "node:crypto";
|
|
import test from "node:test";
|
|
|
|
globalThis.btoa = (value) => Buffer.from(value, "binary").toString("base64");
|
|
|
|
const { createPkcePair } = await import("../src/pkce.js");
|
|
|
|
test("manual PKCE helper creates an RFC 7636 S256 pair", async () => {
|
|
const pair = await createPkcePair(webcrypto);
|
|
|
|
assert.equal(pair.method, "S256");
|
|
assert.equal(pair.verifier.length, 43);
|
|
assert.equal(pair.challenge.length, 43);
|
|
assert.match(pair.verifier, /^[A-Za-z0-9_-]+$/u);
|
|
assert.match(pair.challenge, /^[A-Za-z0-9_-]+$/u);
|
|
assert.notEqual(pair.verifier, pair.challenge);
|
|
});
|