사소한 리팩토링

This commit is contained in:
static committed 2026-10-20 03:12:53 +09:00
1 parent d986493431
commit 48bf9c1165
62 files changed
+31 -39

No files matched your search

+53
View File
@@ -0,0 +1,53 @@
import { PostgreSqlContainer, type StartedPostgreSqlContainer } from "@testcontainers/postgresql";
import { Kysely, PostgresDialect } from "kysely";
import { Migrator } from "kysely/migration";
import pg from "pg";
import type { TestProject } from "vitest/node";
import migrations from "../../src/lib/server/db/migrations/index.ts";
declare module "vitest" {
export interface ProvidedContext {
database: {
host: string;
port: number;
user: string;
password: string;
name: string;
};
}
}
let container: StartedPostgreSqlContainer | undefined;
export const setup = async (project: TestProject) => {
container = await new PostgreSqlContainer("postgres:17").start();
const database = {
host: container.getHost(),
port: container.getPort(),
user: container.getUsername(),
password: container.getPassword(),
name: container.getDatabase(),
};
const db = new Kysely({
dialect: new PostgresDialect({
pool: new pg.Pool({ ...database, database: database.name }),
}),
});
try {
const { error } = await new Migrator({
db,
provider: { getMigrations: async () => migrations },
}).migrateToLatest();
if (error) throw error;
} finally {
await db.destroy();
}
project.provide("database", database);
};
export const teardown = async () => {
await container?.stop();
};
+13
View File
@@ -0,0 +1,13 @@
// Node.js 22 doesn't support base64 conversion of Uint8Array yet (latest Chromium does)
if (!Uint8Array.prototype.toBase64) {
Uint8Array.prototype.toBase64 = function () {
return Buffer.from(this.buffer, this.byteOffset, this.byteLength).toString("base64");
};
}
if (!Uint8Array.fromBase64) {
Uint8Array.fromBase64 = (data: string) => {
return new Uint8Array(Buffer.from(data, "base64"));
};
}
+20
View File
@@ -0,0 +1,20 @@
import { mkdtemp } from "fs/promises";
import { tmpdir } from "os";
import { join } from "path";
import { vi } from "vitest";
const storagePath = await mkdtemp(join(tmpdir(), "arkvault-test-"));
vi.mock("#lib/server/config.ts", async () => {
const { inject } = await import("vitest");
return {
default: {
nodeEnv: "test",
database: inject("database"),
session: { secret: "test-secret", exp: 14 * 24 * 3600 * 1000 },
challenge: { userClientExp: 5 * 60 * 1000, sessionUpgradeExp: 5 * 60 * 1000 },
libraryPath: join(storagePath, "library"),
thumbnailsPath: join(storagePath, "thumbnails"),
},
};
});