|
7 | 7 | "errors"
|
8 | 8 | "fmt"
|
9 | 9 | "reflect"
|
| 10 | + "slices" |
10 | 11 | "sort"
|
11 | 12 | "testing"
|
12 | 13 | "time"
|
@@ -1456,6 +1457,54 @@ func TestMCPServer_ResourceTemplates(t *testing.T) {
|
1456 | 1457 | assert.Equal(t, "text/plain", resultContent.MIMEType)
|
1457 | 1458 | assert.Equal(t, "test content: something", resultContent.Text)
|
1458 | 1459 | })
|
| 1460 | + |
| 1461 | + server.AddResourceTemplates( |
| 1462 | + ServerResourceTemplate{ |
| 1463 | + Template: mcp.NewResourceTemplate( |
| 1464 | + "test://test-another-resource-1", |
| 1465 | + "Another Resource 1", |
| 1466 | + ), |
| 1467 | + Handler: func(ctx context.Context, request mcp.ReadResourceRequest) ([]mcp.ResourceContents, error) { |
| 1468 | + return []mcp.ResourceContents{}, nil |
| 1469 | + }, |
| 1470 | + }, |
| 1471 | + ServerResourceTemplate{ |
| 1472 | + Template: mcp.NewResourceTemplate( |
| 1473 | + "test://test-another-resource-2", |
| 1474 | + "Another Resource 2", |
| 1475 | + ), |
| 1476 | + Handler: func(ctx context.Context, request mcp.ReadResourceRequest) ([]mcp.ResourceContents, error) { |
| 1477 | + return []mcp.ResourceContents{}, nil |
| 1478 | + }, |
| 1479 | + }, |
| 1480 | + ) |
| 1481 | + |
| 1482 | + t.Run("Check bulk add resource templates", func(t *testing.T) { |
| 1483 | + assert.Equal(t, 3, len(server.resourceTemplates)) |
| 1484 | + }) |
| 1485 | + |
| 1486 | + t.Run("Get resource template again", func(t *testing.T) { |
| 1487 | + response := server.HandleMessage( |
| 1488 | + context.Background(), |
| 1489 | + []byte(listMessage), |
| 1490 | + ) |
| 1491 | + assert.NotNil(t, response) |
| 1492 | + |
| 1493 | + resp, ok := response.(mcp.JSONRPCResponse) |
| 1494 | + assert.True(t, ok) |
| 1495 | + listResult, ok := resp.Result.(mcp.ListResourceTemplatesResult) |
| 1496 | + assert.True(t, ok) |
| 1497 | + assert.Len(t, listResult.ResourceTemplates, 3) |
| 1498 | + |
| 1499 | + // resource templates are stored in a map, so the order is not guaranteed |
| 1500 | + for _, rt := range listResult.ResourceTemplates { |
| 1501 | + assert.True(t, slices.Contains([]string{ |
| 1502 | + "My Resource", |
| 1503 | + "Another Resource 1", |
| 1504 | + "Another Resource 2", |
| 1505 | + }, rt.Name)) |
| 1506 | + } |
| 1507 | + }) |
1459 | 1508 | }
|
1460 | 1509 |
|
1461 | 1510 | func createTestServer() *MCPServer {
|
|
0 commit comments