package config import ( "os" "path/filepath" "strings" "testing" ) const mockAgentEndpoint = `[{"agent_id":"agent-mock","cell_id":"cell-mock","address":"127.0.0.1:19090","server_name":"agent.local"}]` func writeMockAgentEndpoints(t *testing.T, body string) string { t.Helper() filename := filepath.Join(t.TempDir(), "agent-endpoints.json") if err := os.WriteFile(filename, []byte(body), 0600); err != nil { t.Fatal(err) } return filename } func TestLoadCurrentMockAgentEndpointRequiresOneLocalDeploymentTarget(t *testing.T) { endpoint, err := LoadCurrentMockAgentEndpoint(writeMockAgentEndpoints(t, mockAgentEndpoint)) if err != nil || endpoint.AgentID != "agent-mock" || endpoint.CellID != "cell-mock" || endpoint.Address != "127.0.0.1:19090" || endpoint.ServerName != "agent.local" { t.Fatalf("approved local Agent target was changed: %v", err) } if _, err := LoadCurrentMockAgentEndpoint(""); err == nil { t.Fatal("missing target inventory was defaulted") } for _, tc := range []struct { name, body string }{ {"multiple Agents", `[{"agent_id":"agent-mock","cell_id":"cell-mock","address":"127.0.0.1:19090","server_name":"agent.local"},{"agent_id":"other","cell_id":"other","address":"127.0.0.1:19091","server_name":"other.local"}]`}, {"external address", strings.Replace(mockAgentEndpoint, "127.0.0.1:19090", "saas.example.invalid:443", 1)}, {"public listener", strings.Replace(mockAgentEndpoint, "127.0.0.1:19090", "0.0.0.0:19090", 1)}, {"duplicate address", strings.Replace(mockAgentEndpoint, `"address":"127.0.0.1:19090"`, `"address":"127.0.0.1:19090","address":"127.0.0.1:19091"`, 1)}, {"oversized inventory", strings.Repeat(" ", 65<<10) + mockAgentEndpoint}, } { t.Run(tc.name, func(t *testing.T) { if _, err := LoadCurrentMockAgentEndpoint(writeMockAgentEndpoints(t, tc.body)); err == nil || strings.Contains(err.Error(), "saas.example.invalid") { t.Fatalf("unapproved Agent target accepted or echoed: %v", err) } }) } }