Pulse/pkg/server/metrics_port_test.go
rcourtman c0ac0762da Fix security scan findings
Harden proxy-auth admin role checks, metrics listener exposure, Teams webhook escaping, and dependency lockfiles.
2026-07-01 09:55:35 +01:00

53 lines
1.6 KiB
Go

package server
import (
"bytes"
"testing"
"github.com/rcourtman/pulse-go-rewrite/internal/config"
)
func TestResolveMetricsPortFromEnvPrefersPrefixedOverride(t *testing.T) {
t.Setenv("PULSE_METRICS_PORT", "0")
t.Setenv("METRICS_PORT", "9091")
if got := ResolveMetricsPortFromEnv(nil, 7655); got != 0 {
t.Fatalf("ResolveMetricsPortFromEnv() = %d, want 0", got)
}
}
func TestResolveMetricsPortFromEnvFallsBackOnInvalidValue(t *testing.T) {
t.Setenv("PULSE_METRICS_PORT", "not-a-port")
var stderr bytes.Buffer
if got := ResolveMetricsPortFromEnv(&stderr, 9091); got != 9091 {
t.Fatalf("ResolveMetricsPortFromEnv() = %d, want fallback 9091", got)
}
if stderr.Len() == 0 {
t.Fatal("expected invalid metrics port warning")
}
}
func TestMetricsListenAddressDefaultsToLoopback(t *testing.T) {
if got := metricsListenAddress(&config.Config{}, 9091); got != "127.0.0.1:9091" {
t.Fatalf("metricsListenAddress() = %q, want loopback default", got)
}
}
func TestMetricsListenAddressUsesConfiguredAddress(t *testing.T) {
cfg := &config.Config{MetricsBindAddress: "192.0.2.10"}
if got := metricsListenAddress(cfg, 9091); got != "192.0.2.10:9091" {
t.Fatalf("metricsListenAddress() = %q, want configured address", got)
}
}
func TestMetricsAddressIsLoopback(t *testing.T) {
for _, addr := range []string{"127.0.0.1:9091", "[::1]:9091", "localhost:9091"} {
if !metricsAddressIsLoopback(addr) {
t.Fatalf("metricsAddressIsLoopback(%q) = false, want true", addr)
}
}
if metricsAddressIsLoopback("0.0.0.0:9091") {
t.Fatal("metricsAddressIsLoopback(0.0.0.0:9091) = true, want false")
}
}