UNPKG

pipe-protocol

Version:

A protocol for large scale Interplanetary Intertool Agent Context

147 lines 6.23 kB
"use strict"; /** * @file Pipe Tool Test Suite * @version 1.0.0 * @status STABLE - COMPLETE TEST COVERAGE * @lastModified 2024-02-04 * * Tests for Pipe tool functionality */ Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const pipeTool_1 = require("../pipeTool"); (0, vitest_1.describe)('Pipe Tool', () => { let mockIpfsClient; (0, vitest_1.beforeEach)(() => { mockIpfsClient = { config: { endpoint: 'http://localhost:5001', timeout: 5000, scope: 'private', pin: true }, storedData: new Map(), pinnedCids: new Map(), fetch: vitest_1.vi.fn(), pin: vitest_1.vi.fn(), unpin: vitest_1.vi.fn(), replicate: vitest_1.vi.fn(), getPinnedCids: vitest_1.vi.fn(), getStatus: vitest_1.vi.fn(), getNodeInfo: vitest_1.vi.fn(), getStorageMetrics: vitest_1.vi.fn(), getConfiguration: vitest_1.vi.fn(), stop: vitest_1.vi.fn(), store: vitest_1.vi.fn() }; // Setup default mock implementations const defaultRecord = { type: 'data', content: { test: 'data' }, scope: 'private', pinned: false, accessPolicy: { hiddenFromLLM: false } }; mockIpfsClient.fetch.mockResolvedValue(defaultRecord); mockIpfsClient.pin.mockResolvedValue(undefined); mockIpfsClient.unpin.mockResolvedValue(undefined); }); (0, vitest_1.it)('should create a tool with correct interface', () => { const pipeTool = (0, pipeTool_1.createPipeTool)(mockIpfsClient); (0, vitest_1.expect)(pipeTool.name).toBe('pipe'); (0, vitest_1.expect)(pipeTool.description).toContain('Access Pipe Protocol'); (0, vitest_1.expect)(pipeTool.parameters.type).toBe('object'); (0, vitest_1.expect)(pipeTool.parameters.properties).toHaveProperty('action'); (0, vitest_1.expect)(pipeTool.parameters.properties).toHaveProperty('cid'); (0, vitest_1.expect)(pipeTool.parameters.required).toContain('action'); (0, vitest_1.expect)(pipeTool.parameters.required).toContain('cid'); }); (0, vitest_1.it)('should retrieve content', async () => { const mockContent = { type: 'data', content: { test: 'custom data' }, scope: 'private', pinned: false, accessPolicy: { hiddenFromLLM: false } }; mockIpfsClient.fetch.mockResolvedValue(mockContent); const pipeTool = (0, pipeTool_1.createPipeTool)(mockIpfsClient); const result = await pipeTool.call({ action: 'retrieve', cid: 'testCid' }); (0, vitest_1.expect)(mockIpfsClient.fetch).toHaveBeenCalledWith('testCid', 'private'); (0, vitest_1.expect)(result.content).toEqual(mockContent); (0, vitest_1.expect)(result.cid).toBe('testCid'); (0, vitest_1.expect)(result.metadata.action).toBe('retrieve'); (0, vitest_1.expect)(result.metadata.timestamp).toBeDefined(); }); (0, vitest_1.it)('should pin content', async () => { const pipeTool = (0, pipeTool_1.createPipeTool)(mockIpfsClient); mockIpfsClient.pin.mockResolvedValue(undefined); const result = await pipeTool.call({ action: 'pin', cid: 'testCid' }); (0, vitest_1.expect)(mockIpfsClient.pin).toHaveBeenCalledWith('testCid', 'private'); (0, vitest_1.expect)(result.success).toBe(true); (0, vitest_1.expect)(result.cid).toBe('testCid'); (0, vitest_1.expect)(result.metadata.action).toBe('pin'); }); (0, vitest_1.it)('should unpin content', async () => { const pipeTool = (0, pipeTool_1.createPipeTool)(mockIpfsClient); mockIpfsClient.unpin.mockResolvedValue(undefined); const result = await pipeTool.call({ action: 'unpin', cid: 'testCid' }); (0, vitest_1.expect)(mockIpfsClient.unpin).toHaveBeenCalledWith('testCid', 'private'); (0, vitest_1.expect)(result.success).toBe(true); (0, vitest_1.expect)(result.cid).toBe('testCid'); (0, vitest_1.expect)(result.metadata.action).toBe('unpin'); }); (0, vitest_1.it)('should get schema', async () => { const mockSchema = { type: 'schema', content: { type: 'object', properties: {} }, scope: 'private', pinned: false, accessPolicy: { hiddenFromLLM: false } }; mockIpfsClient.fetch.mockResolvedValue(mockSchema); const pipeTool = (0, pipeTool_1.createPipeTool)(mockIpfsClient); const result = await pipeTool.call({ action: 'getSchema', cid: 'testCid' }); (0, vitest_1.expect)(mockIpfsClient.fetch).toHaveBeenCalledWith('testCid', 'private'); (0, vitest_1.expect)(result.schema).toEqual(mockSchema); (0, vitest_1.expect)(result.cid).toBe('testCid'); (0, vitest_1.expect)(result.metadata.action).toBe('getSchema'); }); (0, vitest_1.it)('should throw error for unknown action', async () => { const pipeTool = (0, pipeTool_1.createPipeTool)(mockIpfsClient); await (0, vitest_1.expect)(pipeTool.call({ action: 'invalid', cid: 'testCid' })).rejects.toThrow('Unknown action: invalid'); }); (0, vitest_1.it)('should respect scope parameter', async () => { const mockContent = { type: 'data', content: { test: 'data' }, scope: 'public', pinned: false, accessPolicy: { hiddenFromLLM: false } }; mockIpfsClient.fetch.mockResolvedValue(mockContent); const pipeTool = (0, pipeTool_1.createPipeTool)(mockIpfsClient); const result = await pipeTool.call({ action: 'retrieve', cid: 'testCid', scope: 'public' }); (0, vitest_1.expect)(result.metadata.scope).toBe('public'); }); }); //# sourceMappingURL=pipeTool.test.js.map