Skip to content

Commit 5ac0ad7

Browse files
authored
[#70] Handle list resources with no body (#71)
1 parent 1fa18e0 commit 5ac0ad7

File tree

2 files changed

+43
-3
lines changed

2 files changed

+43
-3
lines changed

server.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -762,9 +762,13 @@ func (s *Server) handleListResources(ctx context.Context, request *transport.Bas
762762
Cursor *string `json:"cursor"`
763763
}
764764
var params resourceRequestParams
765-
err := json.Unmarshal(request.Params, &params)
766-
if err != nil {
767-
return nil, errors.Wrap(err, "failed to unmarshal arguments")
765+
if request.Params == nil {
766+
params = resourceRequestParams{}
767+
} else {
768+
err := json.Unmarshal(request.Params, &params)
769+
if err != nil {
770+
return nil, errors.Wrap(err, "failed to unmarshal arguments")
771+
}
768772
}
769773

770774
// Order by URI for pagination

server_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,42 @@ func TestHandleListPromptsPagination(t *testing.T) {
412412
}
413413
}
414414

415+
func TestHandleListResourcesNoParams(t *testing.T) {
416+
mockTransport := testingutils.NewMockTransport()
417+
server := NewServer(mockTransport)
418+
err := server.Serve()
419+
if err != nil {
420+
t.Fatal(err)
421+
}
422+
423+
// Register resources
424+
resourceURIs := []string{"b://resource", "a://resource"}
425+
for _, uri := range resourceURIs {
426+
err = server.RegisterResource(uri, "resource-"+uri, "Test resource "+uri, "text/plain", func() (*ResourceResponse, error) {
427+
return NewResourceResponse(NewTextEmbeddedResource(uri, "test content", "text/plain")), nil
428+
})
429+
if err != nil {
430+
t.Fatal(err)
431+
}
432+
}
433+
434+
// Test with no Params defined
435+
resp, err := server.handleListResources(context.Background(), &transport.BaseJSONRPCRequest{}, protocol.RequestHandlerExtra{})
436+
if err != nil {
437+
t.Fatal(err)
438+
}
439+
440+
resourcesResp, ok := resp.(ListResourcesResponse)
441+
if !ok {
442+
t.Fatal("Expected ListResourcesResponse")
443+
}
444+
445+
// Verify empty resources list
446+
if len(resourcesResp.Resources) != len(resourceURIs) {
447+
t.Errorf("Expected %d resources, got %d", len(resourceURIs), len(resourcesResp.Resources))
448+
}
449+
}
450+
415451
func TestHandleListResourcesPagination(t *testing.T) {
416452
mockTransport := testingutils.NewMockTransport()
417453
server := NewServer(mockTransport)

0 commit comments

Comments
 (0)