neuron-inspector 0.5.6 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/collections/__tests__/assertions.test.d.ts +1 -0
  2. package/dist/collections/__tests__/assertions.test.js +203 -0
  3. package/dist/collections/__tests__/assertions.test.js.map +1 -0
  4. package/dist/collections/__tests__/dynamic-vars.test.d.ts +1 -0
  5. package/dist/collections/__tests__/dynamic-vars.test.js +169 -0
  6. package/dist/collections/__tests__/dynamic-vars.test.js.map +1 -0
  7. package/dist/collections/__tests__/execution.test.d.ts +1 -0
  8. package/dist/collections/__tests__/execution.test.js +271 -0
  9. package/dist/collections/__tests__/execution.test.js.map +1 -0
  10. package/dist/collections/__tests__/integration.test.d.ts +1 -0
  11. package/dist/collections/__tests__/integration.test.js +478 -0
  12. package/dist/collections/__tests__/integration.test.js.map +1 -0
  13. package/dist/collections/__tests__/resolver.test.d.ts +1 -0
  14. package/dist/collections/__tests__/resolver.test.js +282 -0
  15. package/dist/collections/__tests__/resolver.test.js.map +1 -0
  16. package/dist/collections/__tests__/scenario.test.d.ts +1 -0
  17. package/dist/collections/__tests__/scenario.test.js +367 -0
  18. package/dist/collections/__tests__/scenario.test.js.map +1 -0
  19. package/dist/collections/__tests__/scripts.test.d.ts +1 -0
  20. package/dist/collections/__tests__/scripts.test.js +245 -0
  21. package/dist/collections/__tests__/scripts.test.js.map +1 -0
  22. package/dist/collections/__tests__/store.test.d.ts +1 -0
  23. package/dist/collections/__tests__/store.test.js +313 -0
  24. package/dist/collections/__tests__/store.test.js.map +1 -0
  25. package/dist/collections/assertions.d.ts +16 -0
  26. package/dist/collections/assertions.js +107 -0
  27. package/dist/collections/assertions.js.map +1 -0
  28. package/dist/collections/dynamic-vars.d.ts +75 -0
  29. package/dist/collections/dynamic-vars.js +187 -0
  30. package/dist/collections/dynamic-vars.js.map +1 -0
  31. package/dist/collections/executor.d.ts +94 -0
  32. package/dist/collections/executor.js +251 -0
  33. package/dist/collections/executor.js.map +1 -0
  34. package/dist/collections/http.d.ts +4 -0
  35. package/dist/collections/http.js +84 -0
  36. package/dist/collections/http.js.map +1 -0
  37. package/dist/collections/index.d.ts +12 -0
  38. package/dist/collections/index.js +27 -0
  39. package/dist/collections/index.js.map +1 -0
  40. package/dist/collections/postman.d.ts +10 -0
  41. package/dist/collections/postman.js +288 -0
  42. package/dist/collections/postman.js.map +1 -0
  43. package/dist/collections/resolver.d.ts +74 -0
  44. package/dist/collections/resolver.js +253 -0
  45. package/dist/collections/resolver.js.map +1 -0
  46. package/dist/collections/scripts.d.ts +9 -0
  47. package/dist/collections/scripts.js +55 -0
  48. package/dist/collections/scripts.js.map +1 -0
  49. package/dist/collections/store.d.ts +40 -0
  50. package/dist/collections/store.js +356 -0
  51. package/dist/collections/store.js.map +1 -0
  52. package/dist/collections/tools.d.ts +8 -0
  53. package/dist/collections/tools.js +838 -0
  54. package/dist/collections/tools.js.map +1 -0
  55. package/dist/collections/types.d.ts +177 -0
  56. package/dist/collections/types.js +3 -0
  57. package/dist/collections/types.js.map +1 -0
  58. package/dist/server.js +3 -0
  59. package/dist/server.js.map +1 -1
  60. package/package.json +2 -2
@@ -0,0 +1,478 @@
1
+ import { describe, it, expect, beforeAll, afterAll, beforeEach, afterEach } from "vitest";
2
+ import { createServer } from "node:http";
3
+ import { mkdtemp, rm } from "node:fs/promises";
4
+ import { join } from "node:path";
5
+ import { tmpdir } from "node:os";
6
+ import { YamlCollectionStore } from "../store.js";
7
+ import { FetchHttpExecutor } from "../http.js";
8
+ import { OperatorRegistry } from "../assertions.js";
9
+ import { DeclarativeScriptRunner } from "../scripts.js";
10
+ import { buildDefaultRegistry } from "../dynamic-vars.js";
11
+ import { buildDefaultPipeline } from "../resolver.js";
12
+ import { buildCollectionHandler } from "../tools.js";
13
+ // ── Test HTTP server ────────────────────────────────────────────
14
+ let server;
15
+ let baseUrl;
16
+ const tokens = new Map();
17
+ const bots = new Map();
18
+ function parseBody(req) {
19
+ return new Promise((resolve) => {
20
+ let data = "";
21
+ req.on("data", (chunk) => { data += chunk; });
22
+ req.on("end", () => {
23
+ try {
24
+ resolve(JSON.parse(data));
25
+ }
26
+ catch {
27
+ resolve(null);
28
+ }
29
+ });
30
+ });
31
+ }
32
+ function json(res, status, data) {
33
+ res.writeHead(status, { "Content-Type": "application/json" });
34
+ res.end(JSON.stringify(data));
35
+ }
36
+ beforeAll(async () => {
37
+ server = createServer(async (req, res) => {
38
+ const url = new URL(req.url, `http://${req.headers.host}`);
39
+ const path = url.pathname;
40
+ const method = req.method;
41
+ // Auth check (skip for login)
42
+ if (path !== "/api/v1/auth/login" && path !== "/api/v1/slow") {
43
+ const auth = req.headers.authorization;
44
+ if (!auth || !tokens.has(auth.replace("Bearer ", ""))) {
45
+ return json(res, 401, { error: "Unauthorized" });
46
+ }
47
+ }
48
+ // Routes
49
+ if (method === "POST" && path === "/api/v1/auth/login") {
50
+ const body = await parseBody(req);
51
+ if (body?.email === "test@test.com" && body?.password === "pass123") {
52
+ const token = `tok-${Date.now()}`;
53
+ tokens.set(token, true);
54
+ return json(res, 200, { token, user: { email: body.email } });
55
+ }
56
+ return json(res, 401, { error: "Invalid credentials" });
57
+ }
58
+ if (method === "GET" && path === "/api/v1/bots") {
59
+ return json(res, 200, [...bots.values()]);
60
+ }
61
+ if (method === "POST" && path === "/api/v1/bots") {
62
+ const body = await parseBody(req);
63
+ const id = `bot-${Date.now()}`;
64
+ const bot = { id, name: body?.name ?? "Unnamed" };
65
+ bots.set(id, bot);
66
+ return json(res, 201, bot);
67
+ }
68
+ const botMatch = path.match(/^\/api\/v1\/bots\/(.+)$/);
69
+ if (botMatch) {
70
+ const id = botMatch[1];
71
+ if (method === "GET") {
72
+ const bot = bots.get(id);
73
+ if (!bot)
74
+ return json(res, 404, { error: "Not found" });
75
+ return json(res, 200, bot);
76
+ }
77
+ if (method === "DELETE") {
78
+ if (!bots.has(id))
79
+ return json(res, 404, { error: "Not found" });
80
+ bots.delete(id);
81
+ return json(res, 200, { deleted: true });
82
+ }
83
+ }
84
+ if (method === "GET" && path === "/api/v1/slow") {
85
+ // Delayed response for timeout test
86
+ await new Promise((r) => setTimeout(r, 3000));
87
+ return json(res, 200, { slow: true });
88
+ }
89
+ json(res, 404, { error: "Not found" });
90
+ });
91
+ await new Promise((resolve) => {
92
+ server.listen(0, "127.0.0.1", () => {
93
+ const addr = server.address();
94
+ baseUrl = `http://127.0.0.1:${addr.port}/api/v1`;
95
+ resolve();
96
+ });
97
+ });
98
+ });
99
+ afterAll(async () => {
100
+ await new Promise((resolve) => server.close(() => resolve()));
101
+ });
102
+ // ── Test setup ──────────────────────────────────────────────────
103
+ let globalDir;
104
+ let projectDir;
105
+ let store;
106
+ let handler;
107
+ beforeEach(async () => {
108
+ globalDir = await mkdtemp(join(tmpdir(), "neuron-integ-global-"));
109
+ projectDir = await mkdtemp(join(tmpdir(), "neuron-integ-project-"));
110
+ store = new YamlCollectionStore(globalDir, projectDir);
111
+ const httpExecutor = new FetchHttpExecutor();
112
+ const dynamicVars = buildDefaultRegistry();
113
+ const pipeline = buildDefaultPipeline(dynamicVars);
114
+ const evaluator = new OperatorRegistry();
115
+ const scriptRunner = new DeclarativeScriptRunner();
116
+ handler = buildCollectionHandler(store, httpExecutor, pipeline, evaluator, scriptRunner);
117
+ // Clear state
118
+ tokens.clear();
119
+ bots.clear();
120
+ });
121
+ afterEach(async () => {
122
+ await rm(globalDir, { recursive: true, force: true });
123
+ await rm(projectDir, { recursive: true, force: true });
124
+ });
125
+ // ── Integration tests ───────────────────────────────────────────
126
+ describe("integration: full scenario with real HTTP", () => {
127
+ it("runs a bot-lifecycle scenario end to end", async () => {
128
+ // Create collection
129
+ await handler("neuron_api_create_collection", { name: "Integration API" });
130
+ // Set up environment
131
+ await handler("neuron_api_set_env", {
132
+ collection: "integration-api",
133
+ name: "local",
134
+ base_url: baseUrl,
135
+ });
136
+ await handler("neuron_api_switch_env", { collection: "integration-api", name: "local" });
137
+ // Add endpoints
138
+ await handler("neuron_api_upsert_endpoint", {
139
+ collection: "integration-api",
140
+ folder: "auth",
141
+ method: "POST",
142
+ path: "/auth/login",
143
+ body: { email: "test@test.com", password: "pass123" },
144
+ tests: [
145
+ { check: "status", expect: 200 },
146
+ { check: "body.token", op: "exists" },
147
+ ],
148
+ extract: { auth_token: "body.token" },
149
+ });
150
+ await handler("neuron_api_upsert_endpoint", {
151
+ collection: "integration-api",
152
+ folder: "bots",
153
+ method: "POST",
154
+ path: "/bots",
155
+ headers: { Authorization: "Bearer {{auth_token}}" },
156
+ body: { name: "Integration Bot" },
157
+ tests: [
158
+ { check: "status", expect: 201 },
159
+ { check: "body.id", op: "exists" },
160
+ { check: "body.name", expect: "Integration Bot" },
161
+ ],
162
+ extract: { bot_id: "body.id" },
163
+ });
164
+ await handler("neuron_api_upsert_endpoint", {
165
+ collection: "integration-api",
166
+ folder: "bots",
167
+ method: "GET",
168
+ path: "/bots/{{bot_id}}",
169
+ headers: { Authorization: "Bearer {{auth_token}}" },
170
+ tests: [
171
+ { check: "status", expect: 200 },
172
+ { check: "body.name", expect: "Integration Bot" },
173
+ ],
174
+ });
175
+ await handler("neuron_api_upsert_endpoint", {
176
+ collection: "integration-api",
177
+ folder: "bots",
178
+ method: "DELETE",
179
+ path: "/bots/{{bot_id}}",
180
+ headers: { Authorization: "Bearer {{auth_token}}" },
181
+ tests: [{ check: "status", expect: 200 }],
182
+ });
183
+ // Verify collection structure
184
+ const coll = (await handler("neuron_api_get_collection", {
185
+ collection: "integration-api",
186
+ }));
187
+ expect(coll.summary.folder_count).toBe(2);
188
+ expect(coll.summary.endpoint_count).toBe(4);
189
+ // Run scenario: add scenario first by saving the collection
190
+ const saved = await store.get("integration-api");
191
+ saved.collection.scenarios = {
192
+ "bot-lifecycle": {
193
+ description: "Full CRUD lifecycle",
194
+ steps: [
195
+ { ref: "auth/Post Login" },
196
+ { ref: "bots/Post Bots" },
197
+ { ref: "bots/Get Bots" },
198
+ { ref: "bots/Delete Bots" },
199
+ ],
200
+ },
201
+ };
202
+ await store.save("integration-api", saved.collection);
203
+ // Run the scenario
204
+ const result = (await handler("neuron_api_run_scenario", {
205
+ collection: "integration-api",
206
+ scenario: "bot-lifecycle",
207
+ }));
208
+ expect(result.passed).toBe(true);
209
+ expect(result.steps).toHaveLength(4);
210
+ // Step 0: Login succeeded and extracted token
211
+ expect(result.steps[0].response.status).toBe(200);
212
+ expect(result.extracted.auth_token).toBeDefined();
213
+ expect(result.extracted.auth_token).toMatch(/^tok-/);
214
+ // Step 1: Create Bot succeeded and extracted bot_id
215
+ expect(result.steps[1].response.status).toBe(201);
216
+ expect(result.extracted.bot_id).toBeDefined();
217
+ expect(result.extracted.bot_id).toMatch(/^bot-/);
218
+ // Step 2: Get Bot used extracted bot_id
219
+ expect(result.steps[2].response.status).toBe(200);
220
+ expect(result.steps[2].response.body.name).toBe("Integration Bot");
221
+ // Step 3: Delete Bot succeeded
222
+ expect(result.steps[3].response.status).toBe(200);
223
+ // Verify bot is actually deleted
224
+ expect(bots.size).toBe(0);
225
+ });
226
+ it("runs a single endpoint against the real server", async () => {
227
+ await handler("neuron_api_create_collection", { name: "Single Test" });
228
+ await handler("neuron_api_set_env", {
229
+ collection: "single-test",
230
+ name: "local",
231
+ base_url: baseUrl,
232
+ });
233
+ await handler("neuron_api_switch_env", { collection: "single-test", name: "local" });
234
+ await handler("neuron_api_upsert_endpoint", {
235
+ collection: "single-test",
236
+ folder: "auth",
237
+ method: "POST",
238
+ path: "/auth/login",
239
+ body: { email: "test@test.com", password: "pass123" },
240
+ tests: [{ check: "status", expect: 200 }],
241
+ });
242
+ const result = (await handler("neuron_api_run", {
243
+ collection: "single-test",
244
+ folder: "auth",
245
+ method: "POST",
246
+ path: "/auth/login",
247
+ }));
248
+ expect(result.response.status).toBe(200);
249
+ expect(result.response.body.token).toBeDefined();
250
+ expect(result.assertions[0].passed).toBe(true);
251
+ expect(result.response.timing.total_ms).toBeGreaterThan(0);
252
+ });
253
+ it("reports failed assertions from real server", async () => {
254
+ await handler("neuron_api_create_collection", { name: "Fail Test" });
255
+ await handler("neuron_api_set_env", {
256
+ collection: "fail-test",
257
+ name: "local",
258
+ base_url: baseUrl,
259
+ });
260
+ await handler("neuron_api_switch_env", { collection: "fail-test", name: "local" });
261
+ await handler("neuron_api_upsert_endpoint", {
262
+ collection: "fail-test",
263
+ folder: "auth",
264
+ method: "POST",
265
+ path: "/auth/login",
266
+ body: { email: "wrong@test.com", password: "wrong" },
267
+ tests: [
268
+ { check: "status", expect: 200 }, // Will fail: server returns 401
269
+ ],
270
+ });
271
+ const result = (await handler("neuron_api_run", {
272
+ collection: "fail-test",
273
+ folder: "auth",
274
+ method: "POST",
275
+ path: "/auth/login",
276
+ }));
277
+ expect(result.response.status).toBe(401);
278
+ expect(result.assertions[0].passed).toBe(false);
279
+ expect(result.assertions[0].actual).toBe(401);
280
+ expect(result.assertions[0].expected).toBe(200);
281
+ });
282
+ it("handles timeout", async () => {
283
+ await handler("neuron_api_create_collection", { name: "Timeout Test" });
284
+ await handler("neuron_api_set_env", {
285
+ collection: "timeout-test",
286
+ name: "local",
287
+ base_url: baseUrl,
288
+ });
289
+ await handler("neuron_api_switch_env", { collection: "timeout-test", name: "local" });
290
+ await handler("neuron_api_upsert_endpoint", {
291
+ collection: "timeout-test",
292
+ folder: "slow",
293
+ method: "GET",
294
+ path: "/slow",
295
+ timeout_ms: 500, // Server delays 3s, we timeout at 500ms
296
+ });
297
+ const result = (await handler("neuron_api_run", {
298
+ collection: "timeout-test",
299
+ folder: "slow",
300
+ method: "GET",
301
+ path: "/slow",
302
+ }));
303
+ expect(result.response.status).toBe(0);
304
+ expect(result.response.statusText).toBe("timeout");
305
+ expect(result.error).toBe("timeout");
306
+ }, 10000);
307
+ it("fails pre-execution on unresolved variables", async () => {
308
+ await handler("neuron_api_create_collection", { name: "Unresolved Test" });
309
+ await handler("neuron_api_set_env", {
310
+ collection: "unresolved-test",
311
+ name: "local",
312
+ base_url: baseUrl,
313
+ });
314
+ await handler("neuron_api_switch_env", { collection: "unresolved-test", name: "local" });
315
+ await handler("neuron_api_upsert_endpoint", {
316
+ collection: "unresolved-test",
317
+ folder: "broken",
318
+ method: "GET",
319
+ path: "/bots/{{missing_id}}",
320
+ });
321
+ const result = (await handler("neuron_api_run", {
322
+ collection: "unresolved-test",
323
+ folder: "broken",
324
+ method: "GET",
325
+ path: "/bots/{{missing_id}}",
326
+ }));
327
+ expect(result.error).toContain("Unresolved");
328
+ expect(result.error).toContain("missing_id");
329
+ // No HTTP call should have been made
330
+ expect(result.response.status).toBe(0);
331
+ });
332
+ });
333
+ // ── Query tool tests ────────────────────────────────────────────
334
+ describe("neuron_api_query", () => {
335
+ beforeEach(async () => {
336
+ await store.save("api-one", {
337
+ name: "API One",
338
+ folders: {
339
+ auth: {
340
+ endpoints: [
341
+ { name: "Login", method: "POST", path: "/auth/login", tags: ["auth", "critical"] },
342
+ { name: "Get Profile", method: "GET", path: "/auth/me", tags: ["auth"] },
343
+ ],
344
+ },
345
+ bots: {
346
+ endpoints: [
347
+ { name: "List Bots", method: "GET", path: "/bots", description: "Retrieve all bots" },
348
+ { name: "Create Bot", method: "POST", path: "/bots", tags: ["write"] },
349
+ ],
350
+ },
351
+ },
352
+ });
353
+ await store.save("api-two", {
354
+ name: "API Two",
355
+ folders: {
356
+ orders: {
357
+ endpoints: [
358
+ { name: "List Orders", method: "GET", path: "/orders", tags: ["read"] },
359
+ ],
360
+ },
361
+ },
362
+ });
363
+ });
364
+ it("returns all endpoints when no filters", async () => {
365
+ const result = (await handler("neuron_api_query", {}));
366
+ expect(result.count).toBe(5);
367
+ });
368
+ it("filters by method", async () => {
369
+ const result = (await handler("neuron_api_query", { method: "POST" }));
370
+ expect(result.count).toBe(2);
371
+ expect(result.results.every((r) => r.endpoint.method === "POST")).toBe(true);
372
+ });
373
+ it("filters by path pattern", async () => {
374
+ const result = (await handler("neuron_api_query", { path: "/bots" }));
375
+ expect(result.count).toBe(2); // List Bots and Create Bot
376
+ });
377
+ it("filters by folder", async () => {
378
+ const result = (await handler("neuron_api_query", { folder: "auth" }));
379
+ expect(result.count).toBe(2);
380
+ expect(result.results.every((r) => r.folder === "auth")).toBe(true);
381
+ });
382
+ it("filters by tags", async () => {
383
+ const result = (await handler("neuron_api_query", { tags: ["critical"] }));
384
+ expect(result.count).toBe(1);
385
+ expect(result.results[0].endpoint.name).toBe("Login");
386
+ });
387
+ it("filters by free text", async () => {
388
+ const result = (await handler("neuron_api_query", { text: "retrieve" }));
389
+ expect(result.count).toBe(1);
390
+ expect(result.results[0].endpoint.name).toBe("List Bots");
391
+ });
392
+ it("filters by collection", async () => {
393
+ const result = (await handler("neuron_api_query", { collection: "api-two" }));
394
+ expect(result.count).toBe(1);
395
+ expect(result.results[0].collection).toBe("api-two");
396
+ });
397
+ it("combines filters", async () => {
398
+ const result = (await handler("neuron_api_query", {
399
+ collection: "api-one",
400
+ method: "GET",
401
+ folder: "auth",
402
+ }));
403
+ expect(result.count).toBe(1);
404
+ expect(result.results[0].endpoint.name).toBe("Get Profile");
405
+ });
406
+ });
407
+ // ── Generate tests tool ─────────────────────────────────────────
408
+ describe("neuron_api_generate_tests", () => {
409
+ beforeEach(async () => {
410
+ await store.save("api", {
411
+ name: "API",
412
+ folders: {
413
+ bots: {
414
+ endpoints: [
415
+ { name: "List Bots", method: "GET", path: "/bots" },
416
+ { name: "Create Bot", method: "POST", path: "/bots", body: { name: "Test" } },
417
+ { name: "Get Bot", method: "GET", path: "/bots/{{bot_id}}" },
418
+ { name: "Delete Bot", method: "DELETE", path: "/bots/{{bot_id}}" },
419
+ ],
420
+ },
421
+ },
422
+ });
423
+ });
424
+ it("suggests 200 for GET list endpoint", async () => {
425
+ const result = (await handler("neuron_api_generate_tests", {
426
+ collection: "api",
427
+ folder: "bots",
428
+ method: "GET",
429
+ path: "/bots",
430
+ }));
431
+ const statusSuggestion = result.suggestions.find((s) => s.check === "status" && s.expect === 200);
432
+ expect(statusSuggestion).toBeDefined();
433
+ const arraySuggestion = result.suggestions.find((s) => s.op === "isArray");
434
+ expect(arraySuggestion).toBeDefined();
435
+ });
436
+ it("suggests 201 and body.id for POST", async () => {
437
+ const result = (await handler("neuron_api_generate_tests", {
438
+ collection: "api",
439
+ folder: "bots",
440
+ method: "POST",
441
+ path: "/bots",
442
+ }));
443
+ const statusSuggestion = result.suggestions.find((s) => s.check === "status" && s.expect === 201);
444
+ expect(statusSuggestion).toBeDefined();
445
+ const idSuggestion = result.suggestions.find((s) => s.check === "body.id" && s.op === "exists");
446
+ expect(idSuggestion).toBeDefined();
447
+ });
448
+ it("suggests 404 error scenario for parameterized paths", async () => {
449
+ const result = (await handler("neuron_api_generate_tests", {
450
+ collection: "api",
451
+ folder: "bots",
452
+ method: "GET",
453
+ path: "/bots/{{bot_id}}",
454
+ }));
455
+ const notFoundSuggestion = result.suggestions.find((s) => s.expect === 404);
456
+ expect(notFoundSuggestion).toBeDefined();
457
+ });
458
+ it("always suggests timing check", async () => {
459
+ const result = (await handler("neuron_api_generate_tests", {
460
+ collection: "api",
461
+ folder: "bots",
462
+ method: "DELETE",
463
+ path: "/bots/{{bot_id}}",
464
+ }));
465
+ const timingSuggestion = result.suggestions.find((s) => s.check === "timing.total");
466
+ expect(timingSuggestion).toBeDefined();
467
+ });
468
+ it("returns error for missing endpoint", async () => {
469
+ const result = (await handler("neuron_api_generate_tests", {
470
+ collection: "api",
471
+ folder: "bots",
472
+ method: "PATCH",
473
+ path: "/bots",
474
+ }));
475
+ expect(result.error).toContain("not found");
476
+ });
477
+ });
478
+ //# sourceMappingURL=integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../src/collections/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};