import { Request, Response, NextFunction } from "express" import { findAndAuthorizeCurrentUserMiddleware, type AuthorizationRequest, } from "@/middlewares/find-and-authorize-current-user-middleware" import { User } from "@/models" /** * Usage: * At the top level of a test file import: * import { mockCurrentUser } from "@/support" * * Then where you want to set the current user: * mockCurrentUser(currentUser) * * @param newCurrentUser - The user to set as the current user */ export function mockCurrentUser(newCurrentUser: User) { vi.mock("@/middlewares/jwt-middleware", () => ({ default: async (_req: Request, _res: Response, next: NextFunction) => next(), jwtMiddleware: async (_req: Request, _res: Response, next: NextFunction) => next(), })) vi.mock("@/middlewares/find-and-authorize-current-user-middleware") const findAndAuthorizeCurrentUserMiddlewareMock = vi.mocked(findAndAuthorizeCurrentUserMiddleware) findAndAuthorizeCurrentUserMiddlewareMock.mockImplementation( async (req: AuthorizationRequest, _res: Response, next: NextFunction) => { const currentUser = await User.withScope(["asCurrentUser"]).findByPk(newCurrentUser.id, { rejectOnEmpty: true, }) req.currentUser = currentUser next() } ) }