39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
import { test, expect } from "vitest";
|
|
import Fastify from "fastify";
|
|
import { authPreHandler, getUser } from "../src/auth/auth.js";
|
|
|
|
test("mode none assegna dev@local", async () => {
|
|
const app = Fastify();
|
|
app.addHook("preHandler", authPreHandler("none"));
|
|
app.get("/me", async (req) => getUser(req));
|
|
expect((await app.inject({ method: "GET", url: "/me" })).json()).toEqual({
|
|
id: "dev@local",
|
|
});
|
|
});
|
|
|
|
test("mode mock legge l'header", async () => {
|
|
const app = Fastify();
|
|
app.addHook("preHandler", authPreHandler("mock"));
|
|
app.get("/me", async (req) => getUser(req));
|
|
const res = await app.inject({
|
|
method: "GET",
|
|
url: "/me",
|
|
headers: { "x-mock-user": "alice" },
|
|
});
|
|
expect(res.json()).toEqual({ id: "alice" });
|
|
});
|
|
|
|
test("upstream mode requires the authenticated proxy identity header", async () => {
|
|
const app = Fastify();
|
|
app.addHook("preHandler", authPreHandler("upstream"));
|
|
app.get("/me", async (req) => getUser(req));
|
|
|
|
expect((await app.inject({ method: "GET", url: "/me" })).statusCode).toBe(401);
|
|
const authenticated = await app.inject({
|
|
method: "GET",
|
|
url: "/me",
|
|
headers: { "x-authenticated-user": "alice@example.test" },
|
|
});
|
|
expect(authenticated.json()).toEqual({ id: "alice@example.test" });
|
|
});
|