@authduo/authduo
Version:
Free User-sovereign Authentication for the World
35 lines • 1.46 kB
JavaScript
import "@benev/slate/x/node.js";
import { expect } from "cynic";
import { Keys } from "./auth/tokens/keys.js";
import { Passport } from "./auth/passport.js";
import { Claim } from "./auth/tokens/claim.js";
import { Proof } from "./auth/tokens/proof.js";
async function makeAndValidateLoginToken() {
const passport = await Passport.generate();
const { proofToken, keysToken } = await passport.signLoginTokens({
issuer: "testissuer",
audience: "testaudience",
expiresAt: Date.now() + 60_000,
});
const verification = { allowedAudiences: ["testaudience"] };
const proof = await Proof.verify(proofToken, verification);
const loginKeys = await Keys.verify(proof, keysToken, verification);
expect(loginKeys.thumbprint).equals(passport.thumbprint);
return loginKeys;
}
export default {
async "generate a passport, sign a login token, and verify it"() {
await makeAndValidateLoginToken();
},
async "sign and verify a claim token"() {
const loginKeys = await makeAndValidateLoginToken();
const claimToken = await loginKeys.signClaimToken({
data: "hello",
expiresAt: Date.now() + 60_000,
});
const proof = await Proof.verify(loginKeys.proof.token, { allowedAudiences: ["testaudience"] });
const claim = await Claim.verify(proof, claimToken);
expect(claim.data).equals("hello");
},
};
//# sourceMappingURL=tests.test.js.map