mirror of
https://github.com/warmbly/warmbly.git
synced 2026-10-15 00:02:42 +00:00
32 lines
1.1 KiB
Go
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)
|
|
}
|
|
}
|