import test from "node:test"; import assert from "node:assert/strict"; import { validateChatInput, isOwnedSession } from "../src/routes/chatValidation.js"; test("accepts a valid chat request", () => { assert.deepEqual(validateChatInput({ text: "hello", grade: "Grade 10", subject: "math" }), { ok: true }); }); test("rejects invalid metadata and oversized messages", () => { assert.equal(validateChatInput({ text: "hello", grade: "invalid" }).error, "Invalid grade"); assert.equal(validateChatInput({ text: "hello", subject: "invalid" }).error, "Invalid subject"); assert.equal(validateChatInput({ text: "" }).error, "Message text is required"); assert.equal(validateChatInput({ text: "x".repeat(10001) }).error, "Message too long (max 10000 characters)"); }); test("only the owning user can access a session", () => { assert.equal(isOwnedSession({ user_id: "user-a" }, "user-a"), true); assert.equal(isOwnedSession({ user_id: "user-a" }, "user-b"), false); assert.equal(isOwnedSession(null, "user-a"), false); });