46 lines
1.9 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|