package mcp import ( "context" "net/http" "testing" ) func TestEnvWith_OverridesAndPreserves(t *testing.T) { t.Parallel() base := []string{"PATH=/usr/bin", "HOME=/root"} got := envWith(base, map[string]string{"HOME": "/tmp", "MCP_TOKEN": "abc"}) if len(got) != 3 { t.Fatalf("len = %d, want 3 (%v)", len(got), got) } seen := map[string]bool{} for _, kv := range got { seen[kv] = true } if !seen["PATH=/usr/bin"] || !seen["HOME=/tmp"] || !seen["MCP_TOKEN=abc"] { t.Fatalf("merged env = %v", got) } if len(envWith(base, nil)) != len(base) { t.Fatal("empty extra changed the base environment") } } func TestHTTPTransport_SendsAPIKey(t *testing.T) { t.Parallel() got := make(chan string, 1) srv := httpTestServer(t, func(w http.ResponseWriter, r *http.Request) { got <- r.Header.Get("Authorization") httpJSONResponse(w, r) }) defer srv.Close() tr := newHTTPTransport(MCPConfig{Name: "s", URL: srv.URL, APIKey: "sk-1234"}, defaultLogger()) defer tr.Close() if err := tr.Start(context.Background()); err != nil { t.Fatalf("Start: %v", err) } if err := tr.Call(context.Background(), "tools/list", nil, &listToolsResult{}); err != nil { t.Fatalf("Call: %v", err) } if auth := <-got; auth != "Bearer sk-1234" { t.Fatalf("Authorization = %q, want bearer key", auth) } }