Files
go-sip/internal/config/current_agent_endpoints_test.go
T

46 lines
1.9 KiB
Go

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)
}
})
}
}