task-store-e2e.test.mjs
66 lines 2.1 KB
Raw
sha256:b5f647cb9c409f563d4671fe3fc05ddea01fabfed9b41fc11cb923588e1c1baf mirror: GitHub Phase A durable MCP OAuth (#270) Human minor ⚠ breaking 10 days ago
1 /**
2 * Tier 3 — E2E: empty vault seed walkthrough and scope-filtered list/get.
3 *
4 * @see docs/TASK-STORE-CONTRACT-2G.md §9
5 */
6 import { describe, it, beforeEach, afterEach } from 'node:test';
7 import assert from 'node:assert/strict';
8 import fs from 'node:fs';
9 import path from 'node:path';
10 import { fileURLToPath } from 'node:url';
11 import { handleTaskListRequest, handleTaskGetRequest } from '../lib/task/task-handlers.mjs';
12 import { getRepoRoot } from '../lib/repo-root.mjs';
13
14 const __dirname = path.dirname(fileURLToPath(import.meta.url));
15 const tmpRoot = path.join(__dirname, 'fixtures', 'tmp-task-e2e');
16 const starterDir = path.join(getRepoRoot(), 'tasks/starter');
17
18 describe('E2E — Task read walkthrough', () => {
19 const dataDir = path.join(tmpRoot, 'data');
20 const vaultId = 'default';
21
22 beforeEach(() => {
23 fs.rmSync(tmpRoot, { recursive: true, force: true });
24 fs.mkdirSync(dataDir, { recursive: true });
25 });
26
27 afterEach(() => {
28 fs.rmSync(tmpRoot, { recursive: true, force: true });
29 });
30
31 it('empty vault → first list seeds four starters → get handover returns two artifact links', () => {
32 const list = handleTaskListRequest({
33 dataDir,
34 vaultId,
35 role: 'admin',
36 starterDir,
37 });
38 assert.equal(list.ok, true);
39 assert.equal(list.payload.tasks.length, 4);
40
41 const got = handleTaskGetRequest({
42 dataDir,
43 vaultId,
44 taskId: 'task_2g_handover_001',
45 role: 'admin',
46 starterDir,
47 });
48 assert.equal(got.ok, true);
49 assert.equal(got.payload.task.artifact_links.length, 2);
50 assert.equal(got.payload.task.run_ref, 'run_overseer_in_progress');
51 });
52
53 it('list --scope personal returns exactly one task', () => {
54 handleTaskListRequest({ dataDir, vaultId, role: 'admin', starterDir });
55 const personal = handleTaskListRequest({
56 dataDir,
57 vaultId,
58 role: 'admin',
59 scope: 'personal',
60 starterDir,
61 });
62 assert.equal(personal.ok, true);
63 assert.equal(personal.payload.tasks.length, 1);
64 assert.equal(personal.payload.tasks[0].task_id, 'task_personal_practice');
65 });
66 });
File History 1 commit
sha256:b5f647cb9c409f563d4671fe3fc05ddea01fabfed9b41fc11cb923588e1c1baf mirror: GitHub Phase A durable MCP OAuth (#270) Human minor 10 days ago