import { expect, test } from "bun:test"; import { DatabaseSessionStore } from "../modules/database/src/sessions.ts"; import { createSqliteDriver } from "../modules/database/src/adapters/sqlite.ts"; import { App } from "../core/app.ts"; import { authIntegration } from "../integrations/auth.ts"; import { Controller } from "../decorators/Controller.ts"; import { Route } from "../decorators/Route.ts"; import { Auth } from "../decorators/Auth.ts"; import { Module } from "../decorators/Module.ts"; import { resolveConfig } from "../core/config.ts"; import { formatSource } from "../core/format-source.ts"; import plugin from "../modules/prettier-plugin/index.ts"; import prettier from "prettier"; import { compileCss } from "../views/css/index.ts"; test("database sessions authenticate across app instances, revoke and consume atomically", async () => { const driver = createSqliteDriver({ path: ":memory:" }); const store = await DatabaseSessionStore.create(driver); @Controller("/") class PrivateController { @Route("/private") @Auth() private() { return "protected"; } } @Module({ controllers: [PrivateController] }) class Root {} const create = () => App.create({ config: resolveConfig(), modules: [Root], integrations: [authIntegration({ store, login: () => ({ id: "ada" }) })], }); try { const first = await create(); const second = await create(); const login = await first.fetch( new Request("https://app.test/auth/login", { method: "POST", headers: { origin: "https://app.test", "content-type": "application/json", }, body: JSON.stringify({ email: "ada", password: "secret" }), }), ); const cookie = login.headers.get("set-cookie")!; expect( ( await second.fetch( new Request("https://app.test/private", { headers: { cookie } }), ) ).status, ).toBe(200); await first.fetch( new Request("https://app.test/auth/logout", { method: "POST", headers: { origin: "https://app.test", cookie }, }), ); expect( ( await second.fetch( new Request("https://app.test/private", { headers: { cookie } }), ) ).status, ).toBe(401); await store.set("transaction", { value: { verifier: "once" }, expires: Date.now() + 10000, }); expect( ( await Promise.all([ store.consume("transaction"), store.consume("transaction"), ]) ).filter(Boolean), ).toHaveLength(1); await store.set("expired", { value: {}, expires: 1 }); expect(await store.get("expired")).toBeUndefined(); } finally { await driver.close(); } }); test("Prettier delegates to muddle formatting and preserves compiled STCSS", async () => { const source = ".card{padding:1rem;@predict mobile max-height; &:hover{opacity:0.8;}}"; const formatted = await formatSource(source, "stcss"); expect( await prettier.format(source, { parser: "stcss", plugins: [plugin] }), ).toBe(formatted); expect(await formatSource(formatted, "stcss")).toBe(formatted); expect(compileCss(formatted)).toBe(compileCss(source)); const spug = 'javascript!\nconst title={text:"Hello"}\nend\ndiv\n p= title.text\n'; const next = await formatSource(spug, "spug"); expect(next).toContain('const title = { text: "Hello" };'); expect(await formatSource(next, "spug")).toBe(next); const raw = 'script.\n const text = "a b";\n\n console.log(text);\np End\n'; expect(await formatSource(raw, "spug")).toBe(raw); });