import { INestApplication } from "@nestjs/common"; import request from "supertest"; import { buildTestApp } from "./app.harness"; /** * Auth controller integration tests. * * The login endpoint requires a live browser + real key files, so it is not * exercised here (those belong to e2e tests with real credentials). * We cover the parts that can be tested without external dependencies. */ describe("AuthController", () => { let app: INestApplication; beforeAll(async () => { app = await buildTestApp(); }); afterAll(async () => { await app.close(); }); // ── GET /keys ────────────────────────────────────────────────────────────── describe("GET /keys", () => { it("returns 200 with a keys array", async () => { const res = await request(app.getHttpServer()).get("/keys").expect(200); expect(res.body).toHaveProperty("keys"); expect(Array.isArray(res.body.keys)).toBe(true); }); }); // ── POST /login ──────────────────────────────────────────────────────────── describe("POST /login", () => { it("returns 400 when body is empty", async () => { await request(app.getHttpServer()).post("/login").send({}).expect(400); }); it("returns 400 when key is missing", async () => { await request(app.getHttpServer()) .post("/login") .send({ environmentName: "test-env" }) .expect(400); }); it("returns 400 when environmentName is missing", async () => { await request(app.getHttpServer()) .post("/login") .send({ key: "some-key" }) .expect(400); }); it("returns 400 when key file does not exist", async () => { await request(app.getHttpServer()) .post("/login") .send({ key: "nonexistent-key", environmentName: "test-env" }) .expect(404); // NotFoundException for missing environment }); }); });