58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package debugtrace
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoggerWritesTraceAndRedactsSecrets(t *testing.T) {
|
|
l, err := New(Config{Enabled: true, Dir: t.TempDir(), MaxBytes: 1 << 20, KeepFiles: 2, MaxString: 1000})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ctx := WithTrace(context.Background(), "trace_test")
|
|
l.Record(ctx, "planner", "request", "input", "info", map[string]any{"message": "Montag Nudeln", "authorization": "Bearer secret", "enrollment_token": "mesh-bootstrap-secret", "access_token": "worker-session-secret"}, nil, 0)
|
|
evs, err := l.Events(10)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(evs) != 1 {
|
|
t.Fatalf("events=%d", len(evs))
|
|
}
|
|
var ev Event
|
|
if err := json.Unmarshal(evs[0], &ev); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if ev.TraceID != "trace_test" || ev.Component != "planner" || ev.Stage != "request" {
|
|
t.Fatalf("event=%+v", ev)
|
|
}
|
|
b, _ := json.Marshal(ev.Data)
|
|
s := string(b)
|
|
if strings.Contains(s, "Bearer secret") || strings.Contains(s, "mesh-bootstrap-secret") || strings.Contains(s, "worker-session-secret") || !strings.Contains(s, "REDACTED") {
|
|
t.Fatalf("secret not redacted: %s", s)
|
|
}
|
|
if !strings.Contains(s, "Montag Nudeln") {
|
|
t.Fatalf("message missing: %s", s)
|
|
}
|
|
}
|
|
|
|
func TestLoggerClear(t *testing.T) {
|
|
l, err := New(Config{Enabled: true, Dir: t.TempDir()})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
l.Record(WithTrace(context.Background(), "x"), "http", "request", "input", "info", map[string]any{"a": 1}, nil, 0)
|
|
if err := l.Clear(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
evs, err := l.Events(10)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(evs) != 0 {
|
|
t.Fatalf("events=%d", len(evs))
|
|
}
|
|
}
|