返回 DeepSeek-Reasonix
mcp_server_unavailable_reason_test.go
根目录 / internal / agent / mcp_server_unavailable_reason_test.go
1 package agent
2
3 import (
4 "strings"
5 "testing"
6
7 "reasonix/internal/config"
8 )
9
10 // "disabled" and "never registered" have different causes and different fixes.
11 // Reporting the second as the first sends the user looking for a toggle that
12 // does not exist — which is exactly what a host-session MCP server used to hit,
13 // since it connects and lists its tools while the capability runtime has no
14 // record of it at all.
15 func TestServerUnavailableReasonSeparatesUnregisteredFromDisabled(t *testing.T) {
16 r := runtimeWithServers(config.PluginEntry{Name: "enabled-server"})
17 r.servers["disabled-server"] = mcpRuntimeServer{
18 entry: config.PluginEntry{Name: "disabled-server"},
19 enabled: false,
20 }
21 frontend := r.NewFrontend(nil, nil)
22
23 if got := frontend.serverUnavailableReason("disabled-server"); !strings.Contains(got, "is disabled in this session") {
24 t.Errorf("registered-but-disabled server: reason = %q, want it to say disabled", got)
25 }
26 if got := frontend.serverUnavailableReason("ghost-server"); !strings.Contains(got, "is not registered in this session") {
27 t.Errorf("unregistered server: reason = %q, want it to say not registered", got)
28 }
29 if !frontend.serverEnabled("enabled-server") {
30 t.Error("enabled-server should dispatch")
31 }
32 if frontend.serverEnabled("disabled-server") || frontend.serverEnabled("ghost-server") {
33 t.Error("neither a disabled nor an unregistered server may dispatch")
34 }
35 }
36
36 lines GO