Tests for: - user.ts: User class, roles, permissions, status checks - util.ts: loadFile utility - handlers.ts: multiHandler - types.ts: methodParser, requireAuth, requirePermission - logging.ts: module structure - database.ts: connectionConfig, raw queries, PostgresAuthStore - auth/token.ts: generateToken, hashToken, parseAuthorizationHeader - auth/password.ts: hashPassword, verifyPassword (scrypt) - auth/types.ts: Zod parsers, Session class, tokenLifetimes - auth/store.ts: InMemoryAuthStore - auth/service.ts: AuthService (login, register, verify, reset) - basic/*.ts: route structure tests Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
// Tests for util.ts
|
|
// Pure unit tests with filesystem
|
|
|
|
import assert from "node:assert/strict";
|
|
import { mkdir, rm, writeFile } from "node:fs/promises";
|
|
import { join } from "node:path";
|
|
import { after, before, describe, it } from "node:test";
|
|
import { loadFile } from "./util";
|
|
|
|
describe("util", () => {
|
|
const testDir = join(import.meta.dirname, ".test-util-tmp");
|
|
|
|
before(async () => {
|
|
await mkdir(testDir, { recursive: true });
|
|
});
|
|
|
|
after(async () => {
|
|
await rm(testDir, { recursive: true, force: true });
|
|
});
|
|
|
|
describe("loadFile", () => {
|
|
it("loads file contents as string", async () => {
|
|
const testFile = join(testDir, "test.txt");
|
|
await writeFile(testFile, "hello world");
|
|
|
|
const content = await loadFile(testFile);
|
|
assert.equal(content, "hello world");
|
|
});
|
|
|
|
it("handles utf-8 content", async () => {
|
|
const testFile = join(testDir, "utf8.txt");
|
|
await writeFile(testFile, "hello \u{1F511} world");
|
|
|
|
const content = await loadFile(testFile);
|
|
assert.equal(content, "hello \u{1F511} world");
|
|
});
|
|
|
|
it("handles empty file", async () => {
|
|
const testFile = join(testDir, "empty.txt");
|
|
await writeFile(testFile, "");
|
|
|
|
const content = await loadFile(testFile);
|
|
assert.equal(content, "");
|
|
});
|
|
|
|
it("handles multiline content", async () => {
|
|
const testFile = join(testDir, "multiline.txt");
|
|
await writeFile(testFile, "line1\nline2\nline3");
|
|
|
|
const content = await loadFile(testFile);
|
|
assert.equal(content, "line1\nline2\nline3");
|
|
});
|
|
|
|
it("throws for nonexistent file", async () => {
|
|
await assert.rejects(
|
|
loadFile(join(testDir, "nonexistent.txt")),
|
|
/ENOENT/,
|
|
);
|
|
});
|
|
});
|
|
});
|