mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-16 04:27:21 +00:00
Updated the package version to 0.18.0-rc.4. Improved test logging by disabling console output during tests to reduce noise and enhance readability. Adjusted various test files to implement console log management, ensuring cleaner test outputs.
86 lines
2.5 KiB
TypeScript
86 lines
2.5 KiB
TypeScript
import { afterAll, beforeAll, describe, expect, test } from "bun:test";
|
|
import { type InitialModuleConfigs, createApp } from "../../../src";
|
|
|
|
import { type Kysely, sql } from "kysely";
|
|
import { getDummyConnection } from "../../helper";
|
|
import v7 from "./samples/v7.json";
|
|
import v8 from "./samples/v8.json";
|
|
import v8_2 from "./samples/v8-2.json";
|
|
import { disableConsoleLog, enableConsoleLog } from "core/utils/test";
|
|
|
|
beforeAll(() => disableConsoleLog());
|
|
afterAll(enableConsoleLog);
|
|
|
|
// app expects migratable config to be present in database
|
|
async function createVersionedApp(config: InitialModuleConfigs | any) {
|
|
const { dummyConnection } = getDummyConnection();
|
|
|
|
if (!("version" in config)) throw new Error("config must have a version");
|
|
const { version, ...rest } = config;
|
|
|
|
const db = dummyConnection.kysely as Kysely<any>;
|
|
await sql`CREATE TABLE "__bknd" (
|
|
"id" integer not null primary key autoincrement,
|
|
"version" integer,
|
|
"type" text,
|
|
"json" text,
|
|
"created_at" datetime,
|
|
"updated_at" datetime
|
|
)`.execute(db);
|
|
|
|
await db
|
|
.insertInto("__bknd")
|
|
.values({
|
|
version,
|
|
type: "config",
|
|
created_at: new Date().toISOString(),
|
|
json: JSON.stringify(rest),
|
|
})
|
|
.execute();
|
|
|
|
const app = createApp({
|
|
connection: dummyConnection,
|
|
});
|
|
await app.build();
|
|
return app;
|
|
}
|
|
|
|
describe("Migrations", () => {
|
|
/**
|
|
* updated auth strategies to have "enabled" prop
|
|
* by default, migration should make all available strategies enabled
|
|
*/
|
|
test("migration from 7 to 8", async () => {
|
|
expect(v7.version).toBe(7);
|
|
|
|
const app = await createVersionedApp(v7);
|
|
|
|
expect(app.version()).toBeGreaterThan(7);
|
|
expect(app.toJSON(true).auth.strategies?.password?.enabled).toBe(true);
|
|
|
|
const req = await app.server.request("/api/auth/password/register", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify({
|
|
email: "test@test.com",
|
|
password: "12345678",
|
|
}),
|
|
});
|
|
expect(req.ok).toBe(true);
|
|
const res = (await req.json()) as any;
|
|
expect(res.user.email).toBe("test@test.com");
|
|
});
|
|
|
|
test("migration from 8 to 9", async () => {
|
|
expect(v8.version).toBe(8);
|
|
|
|
const app = await createVersionedApp(v8);
|
|
|
|
expect(app.version()).toBeGreaterThan(8);
|
|
// @ts-expect-error
|
|
expect(app.toJSON(true).server.admin).toBeUndefined();
|
|
});
|
|
});
|