@kilterset/auth0-actions-testing
Version:
Test and develop Auth0 Actions or Okta CIC Actions locally.
116 lines (95 loc) • 3.39 kB
text/typescript
import test from "node:test";
import { ok, strictEqual } from "node:assert";
import { postLogin } from "../../../mock/events/post-login";
import { connection } from "../../../mock";
test("Post-login event", async (t) => {
await t.test("tenant ID informs other values", async (t) => {
await t.test("when not explicitly set", () => {
const { tenant, resource_server, request } = postLogin();
strictEqual(
resource_server.identifier,
`https://${tenant.id}.auth0.com/userinfo`,
"resource_server does does not match expected tenant value"
);
strictEqual(
request.hostname,
`${tenant.id}.auth0.com`,
"resource_server does does not match expected tenant value"
);
});
await t.test("when customized", () => {
const { resource_server, request } = postLogin({
tenant: { id: "custom" },
});
strictEqual(
resource_server.identifier,
"https://custom.auth0.com/userinfo",
"resource_server does does not match expected tenant value"
);
strictEqual(
request.hostname,
`custom.auth0.com`,
"resource_server does does not match expected tenant value"
);
});
});
await t.test("connection informs other values", async (t) => {
await t.test("when not explicitly set", () => {
const { connection, user, request } = postLogin();
strictEqual(
user.user_id.split("|")[0],
connection.strategy,
"user.user_id prefix does does not match expected connection strategy"
);
ok(user.identities?.length, "expected at least one user identity");
strictEqual(
user.identities[0].connection,
connection.name,
"user.identity.connection does does not match expected connection name"
);
strictEqual(
request.query.connection,
connection.name,
"request.query.connection does does not match expected connection name"
);
});
await t.test("when customized", () => {
const customConnection = connection({
name: "custom-name",
strategy: "custom",
});
const { user, request } = postLogin({ connection: customConnection });
strictEqual(
user.user_id.split("|")[0],
"custom",
"user.user_id prefix does does not match expected connection strategy"
);
ok(user.identities?.length, "expected at least one user identity");
strictEqual(
user.identities[0].connection,
"custom-name",
"user.identity.connection does does not match expected connection name"
);
strictEqual(
request.query.connection,
"custom-name",
"request.query.connection does does not match expected connection name"
);
});
});
await t.test("request informs other values", async (t) => {
await t.test("when not explicitly set", () => {
const { request, session, resource_server } = postLogin();
strictEqual(
resource_server.identifier,
`https://${request.hostname}/userinfo`,
"resource_server does does not match expected request hostname"
);
strictEqual(
session.device?.initial_ip || session.device?.last_ip,
request.ip,
"ip in session does does not match expected request ip"
);
});
});
});