import express from "express"; import request from "supertest"; import { describe, expect, it, vi } from "vitest"; import { actorMiddleware } from "../middleware/auth.js"; function createSelectChain(rows: unknown[]) { return { from() { return { where() { return Promise.resolve(rows); }, }; }, }; } function createDb() { return { select: vi .fn() .mockImplementationOnce(() => createSelectChain([])) .mockImplementationOnce(() => createSelectChain([])), } as any; } describe("actorMiddleware authenticated session profile", () => { it("preserves the signed-in user name and email on the board actor", async () => { const app = express(); app.use( actorMiddleware(createDb(), { deploymentMode: "authenticated", resolveSession: async () => ({ session: { id: "session-1", userId: "user-1" }, user: { id: "user-1", name: "User One", email: "user@example.com", }, }), }), ); app.get("/actor", (req, res) => { res.json(req.actor); }); const res = await request(app).get("/actor"); expect(res.status).toBe(200); expect(res.body).toMatchObject({ type: "board", userId: "user-1", userName: "User One", userEmail: "user@example.com", source: "session", companyIds: [], memberships: [], isInstanceAdmin: false, }); }); });