From 3f9acec31ef27614a88285878868f8e19484dfe3 Mon Sep 17 00:00:00 2001 From: Justin Spahr-Summers Date: Tue, 7 Jan 2025 22:10:05 +0000 Subject: [PATCH] Add a test for listCallback --- src/server/index.test.ts | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/server/index.test.ts b/src/server/index.test.ts index 8a5e2971..f6aee24d 100644 --- a/src/server/index.test.ts +++ b/src/server/index.test.ts @@ -1065,6 +1065,63 @@ describe("Server.resource", () => { ); }); + test("should register resource template with listCallback", async () => { + const server = new Server({ + name: "test server", + version: "1.0", + }); + const client = new Client({ + name: "test client", + version: "1.0", + }); + + server.resource( + "test", + new UriTemplate("test://resource/{id}"), + async () => ({ + resources: [ + { + name: "Resource 1", + uri: "test://resource/1", + }, + { + name: "Resource 2", + uri: "test://resource/2", + }, + ], + }), + async (uri) => ({ + contents: [ + { + uri: uri.href, + text: "Test content", + }, + ], + }), + ); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + + const result = await client.request( + { + method: "resources/list", + }, + ListResourcesResultSchema, + ); + + expect(result.resources).toHaveLength(2); + expect(result.resources[0].name).toBe("Resource 1"); + expect(result.resources[0].uri).toBe("test://resource/1"); + expect(result.resources[1].name).toBe("Resource 2"); + expect(result.resources[1].uri).toBe("test://resource/2"); + }); + test("should prevent duplicate resource registration", () => { const server = new Server({ name: "test server",