mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
86 lines
3.4 KiB
TypeScript
86 lines
3.4 KiB
TypeScript
#!/usr/bin/env npx tsx
|
|
|
|
import assert from "node:assert";
|
|
import { rm } from "node:fs/promises";
|
|
import { createE2ETestContext } from "./helpers/test-daemon.ts";
|
|
|
|
console.log("=== Chat Command Tests ===\n");
|
|
|
|
const ctx = await createE2ETestContext({ timeout: 30000 });
|
|
|
|
try {
|
|
{
|
|
console.log("Test 1: chat create/ls/inspect work");
|
|
const created = await ctx.paseo(["chat", "create", "coord-room", "--purpose", "Coordination"]);
|
|
assert.strictEqual(created.exitCode, 0, created.stderr);
|
|
assert(created.stdout.includes("coord-room"), created.stdout);
|
|
|
|
const listed = await ctx.paseo(["chat", "ls"]);
|
|
assert.strictEqual(listed.exitCode, 0, listed.stderr);
|
|
assert(listed.stdout.includes("coord-room"), listed.stdout);
|
|
|
|
const inspected = await ctx.paseo(["chat", "inspect", "coord-room"]);
|
|
assert.strictEqual(inspected.exitCode, 0, inspected.stderr);
|
|
assert(inspected.stdout.includes("Coordination"), inspected.stdout);
|
|
console.log("chat create/ls/inspect work\n");
|
|
}
|
|
|
|
{
|
|
console.log("Test 2: chat post/read/wait work");
|
|
const posted = await ctx.paseo([
|
|
"chat",
|
|
"post",
|
|
"coord-room",
|
|
"first message for @agent-1",
|
|
], {
|
|
env: { PASEO_AGENT_ID: "00000000-0000-4000-8000-000000000111" },
|
|
});
|
|
assert.strictEqual(posted.exitCode, 0, posted.stderr);
|
|
assert(posted.stdout.includes("first message"), posted.stdout);
|
|
assert(posted.stdout.includes("00000000-0000-4000-8000-000000000111"), posted.stdout);
|
|
|
|
const read = await ctx.paseo(["chat", "read", "coord-room", "--limit", "10"]);
|
|
assert.strictEqual(read.exitCode, 0, read.stderr);
|
|
assert(read.stdout.includes("first message"), read.stdout);
|
|
assert(read.stdout.includes("00000000-0000-4000-8000-000000000111"), read.stdout);
|
|
|
|
const readJson = await ctx.paseo(["chat", "read", "coord-room", "--limit", "10", "--json"]);
|
|
assert.strictEqual(readJson.exitCode, 0, readJson.stderr);
|
|
const readPayload = JSON.parse(readJson.stdout);
|
|
assert.strictEqual(readPayload[0]?.author, "00000000-0000-4000-8000-000000000111");
|
|
|
|
const waitPromise = ctx.paseo(["chat", "wait", "coord-room", "--timeout", "5s"]);
|
|
await new Promise((resolve) => setTimeout(resolve, 250));
|
|
const secondPost = await ctx.paseo(["chat", "post", "coord-room", "second message"]);
|
|
assert.strictEqual(secondPost.exitCode, 0, secondPost.stderr);
|
|
|
|
const waited = await waitPromise;
|
|
assert.strictEqual(waited.exitCode, 0, waited.stderr);
|
|
assert(waited.stdout.includes("second message"), waited.stdout);
|
|
console.log("chat post/read/wait work\n");
|
|
}
|
|
|
|
{
|
|
console.log("Test 3: duplicate room create fails");
|
|
const duplicate = await ctx.paseo(["chat", "create", "coord-room"]);
|
|
assert.notStrictEqual(duplicate.exitCode, 0, "duplicate create should fail");
|
|
const combined = `${duplicate.stdout}\n${duplicate.stderr}`;
|
|
assert(combined.toLowerCase().includes("already exists"), combined);
|
|
console.log("duplicate room create fails\n");
|
|
}
|
|
|
|
{
|
|
console.log("Test 4: chat delete works");
|
|
const deleted = await ctx.paseo(["chat", "delete", "coord-room"]);
|
|
assert.strictEqual(deleted.exitCode, 0, deleted.stderr);
|
|
assert(deleted.stdout.includes("coord-room"), deleted.stdout);
|
|
console.log("chat delete works\n");
|
|
}
|
|
} finally {
|
|
await ctx.stop();
|
|
await rm(ctx.paseoHome, { recursive: true, force: true });
|
|
await rm(ctx.workDir, { recursive: true, force: true });
|
|
}
|
|
|
|
console.log("=== Chat Command Tests Passed ===");
|