Files
amcs/internal/mcpserver/server_test.go
Hein (Warky) 9230f39cb6
Some checks failed
CI / build-and-test (push) Failing after -32m5s
feat: add TraitsTab component for managing agent traits
- Implemented TraitsTab.svelte to handle CRUD operations for agent traits.
- Integrated grid for displaying traits with context menu actions for add, edit, and delete.
- Added trait instruction editing functionality with a dedicated editor.
- Updated AdminShell to include PersonasPage for navigation.
- Enhanced AppSidebar with a new entry for Personas.
- Extended ShellPage type to include 'personas'.
- Defined new types for AgentPersona, AgentPart, and AgentTrait in types.ts.
2026-05-05 14:51:58 +02:00

89 lines
2.1 KiB
Go

package mcpserver
import (
"context"
"net/http/httptest"
"reflect"
"sort"
"testing"
"time"
"github.com/modelcontextprotocol/go-sdk/mcp"
"git.warky.dev/wdevs/amcs/internal/config"
)
func TestNewListsAllRegisteredTools(t *testing.T) {
cs := newStreamableTestClient(t)
result, err := cs.ListTools(context.Background(), nil)
if err != nil {
t.Fatalf("ListTools() error = %v", err)
}
got := make([]string, 0, len(result.Tools))
for _, tool := range result.Tools {
got = append(got, tool.Name)
}
sort.Strings(got)
catalog := BuildToolCatalog()
want := make([]string, 0, len(catalog))
for _, tool := range catalog {
want = append(want, tool.Name)
}
sort.Strings(want)
if !reflect.DeepEqual(got, want) {
t.Fatalf("ListTools() names = %#v, want %#v", got, want)
}
}
func TestNewListsStoredFileResourceTemplate(t *testing.T) {
cs := newStreamableTestClient(t)
result, err := cs.ListResourceTemplates(context.Background(), nil)
if err != nil {
t.Fatalf("ListResourceTemplates() error = %v", err)
}
if len(result.ResourceTemplates) != 1 {
t.Fatalf("ListResourceTemplates() count = %d, want 1", len(result.ResourceTemplates))
}
template := result.ResourceTemplates[0]
if template.Name != "stored_file" {
t.Fatalf("resource template name = %q, want %q", template.Name, "stored_file")
}
if template.URITemplate != "amcs://files/{id}" {
t.Fatalf("resource template uri = %q, want %q", template.URITemplate, "amcs://files/{id}")
}
}
func newStreamableTestClient(t *testing.T) *mcp.ClientSession {
t.Helper()
handler, err := New(config.MCPConfig{
ServerName: "test",
Version: "0.0.1",
SessionTimeout: time.Minute,
}, nil, streamableTestToolSet(), nil)
if err != nil {
t.Fatalf("mcpserver.New() error = %v", err)
}
httpServer := httptest.NewServer(handler)
t.Cleanup(httpServer.Close)
client := mcp.NewClient(&mcp.Implementation{Name: "client", Version: "0.0.1"}, nil)
cs, err := client.Connect(context.Background(), &mcp.StreamableClientTransport{Endpoint: httpServer.URL}, nil)
if err != nil {
t.Fatalf("connect client: %v", err)
}
t.Cleanup(func() {
_ = cs.Close()
})
return cs
}