package securelog import "testing" func TestRedactJSON(t *testing.T) { in := `{"email":"a@b.com","password":"Secret12!@#a","password_hash":"$2a$10$abc","new_password":"x","ok":true}` out := RedactJSON(in) if contains(out, "Secret12") || contains(out, "$2a$10$abc") || contains(out, `"x"`) { t.Fatalf("still has secret: %s", out) } if !contains(out, "[REDACTED]") { t.Fatalf("expected redacted: %s", out) } if !contains(out, "a@b.com") { t.Fatalf("email should remain: %s", out) } } func contains(s, sub string) bool { return len(s) >= len(sub) && (s == sub || len(sub) == 0 || (len(s) > 0 && (func() bool { for i := 0; i+len(sub) <= len(s); i++ { if s[i:i+len(sub)] == sub { return true } } return false })())) }