feat: add readServerResource() and listServerResources() api to App (#470)

* feat: add readServerResource() and listServerResources() api to App class

* test: add listServerResources and readServerResource integration tests
This commit is contained in:
Hryhorii (Greg) Avcharov 2026-03-06 15:20:45 +01:00 • committed by GitHub
commit 4f9a7ebc74
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -779,6 +779,27 @@ describe("App <-> AppBridge integration", () => {
expect(result.resources).toEqual(resources);
});
it("onlistresources handles listServerResources() calls from App", async () => {
const resources = [
{ uri: "test://res-1", name: "Resource 1" },
{ uri: "test://res-2", name: "Resource 2", mimeType: "video/mp4" },
];
const receivedRequests: unknown[] = [];
bridge.onlistresources = async (params) => {
receivedRequests.push(params);
return { resources };
};
await bridge.connect(bridgeTransport);
await app.connect(appTransport);
const result = await app.listServerResources({});
expect(receivedRequests).toHaveLength(1);
expect(result.resources).toEqual(resources);
});
it("onreadresource setter registers handler for resources/read requests", async () => {
const requestParams = { uri: "test://resource" };
const contents = [{ uri: "test://resource", text: "content" }];
@ -802,6 +823,28 @@ describe("App <-> AppBridge integration", () => {
expect(result.contents).toEqual(contents);
});
it("onreadresource handles readServerResource() calls from App", async () => {
const requestParams = { uri: "videos://bunny-1mb" };
const contents = [
{ uri: "videos://bunny-1mb", blob: "dmlkZW9kYXRh", mimeType: "video/mp4" },
];
const receivedRequests: unknown[] = [];
bridge.onreadresource = async (params) => {
receivedRequests.push(params);
return { contents };
};
await bridge.connect(bridgeTransport);
await app.connect(appTransport);
const result = await app.readServerResource(requestParams);
expect(receivedRequests).toHaveLength(1);
expect(receivedRequests[0]).toMatchObject(requestParams);
expect(result.contents).toEqual(contents);
});
it("onlistresourcetemplates setter registers handler for resources/templates/list requests", async () => {
const requestParams = {};
const resourceTemplates = [