Pre-launch — Gluecron is in final validation. Public signups and git hosting for non-owner users open after launch review.
CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
Blame · Line-by-line history

migrations.test.ts

Each line is annotated with the commit that last touched it. Click any SHA to jump to that commit and see the surrounding change.

migrations.test.tsBlame39 lines · 1 contributor
14c3cc8Claude1/**
2 * Smoke test for /migrations (migration history page).
3 *
4 * The page is auth-guarded via requireAuth. Without a session the middleware
5 * redirects to /login, which is the observable contract we can reliably
6 * assert in this sandbox (no real DB-backed session). When a valid session
7 * cookie is present the route returns 200 HTML; we cover that best-effort
8 * below and degrade to the redirect assertion when no DB is configured, so
9 * the test adds no regressions against the existing baseline.
10 */
11
12import { describe, it, expect } from "bun:test";
13import app from "../app";
14
15describe("migrations — GET /migrations", () => {
16 it("unauthenticated request redirects to /login (auth guard)", async () => {
17 const res = await app.request("/migrations");
18 expect(res.status).toBe(302);
19 expect(res.headers.get("location") || "").toContain("/login");
20 });
21
22 it("authenticated request returns 200 HTML (or redirect when DB missing)", async () => {
23 // App's requireAuth resolves a user via the `session` cookie. Without a
24 // real DB we can't materialize that session, so we assert a permissive
25 // contract: either we get the page (200 + HTML) or we get redirected to
26 // /login — never a 500.
27 const res = await app.request("/migrations", {
28 headers: { cookie: "session=smoketest-session-token" },
29 });
30 expect([200, 302]).toContain(res.status);
31 if (res.status === 200) {
32 const body = await res.text();
33 expect(body).toContain("<html");
34 expect(body.toLowerCase()).toContain("migration");
35 } else {
36 expect(res.headers.get("location") || "").toContain("/login");
37 }
38 });
39});