Files
warmbly/internal/pkg/nodeevidence/evidence_test.go
T

32 lines
1.1 KiB
Go

package nodeevidence
import (
"encoding/json"
"strings"
"testing"
)
func TestEvidenceDropsUnknownFieldsAndCanonicalizesCategory(t *testing.T) {
var e Event
if err := json.Unmarshal([]byte(`{"event":"sync_control_plane_held","category":"provider","level":"healthy","http_status":503,"error":"password=secret","body":"private mail","headers":{"Authorization":"Bearer secret"}}`), &e); err != nil {
t.Fatal(err)
}
safe, ok := Sanitize(e)
if !ok || safe.Category != "control_plane" || safe.Level != "warn" || safe.HTTPStatus != 503 {
t.Fatal(safe)
}
raw, err := json.Marshal(safe)
if err != nil {
t.Fatal(err)
}
if strings.Contains(string(raw), "secret") || strings.Contains(string(raw), "private mail") || strings.Contains(string(raw), "Authorization") {
t.Fatal("sensitive metadata forwarded")
}
if _, ok := Sanitize(Event{Name: "password=secret"}); ok {
t.Fatal("arbitrary event text accepted")
}
if safe, _ := Sanitize(Event{Name: ProviderAuth, HTTPStatus: 503, Count: -1}); safe.HTTPStatus != 0 || safe.Count != 0 {
t.Fatal("invalid fields accepted", safe)
}
}