31 lines
1.2 KiB
Go
31 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"errors"
|
|
"log/slog"
|
|
"strings"
|
|
"testing"
|
|
|
|
"git.ipao.vip/rogee/go-sip/internal/logging"
|
|
)
|
|
|
|
func TestRecoveryFailureIncludesActualCauseIdentityWithoutSecrets(t *testing.T) {
|
|
prior := slog.Default()
|
|
defer slog.SetDefault(prior)
|
|
var out bytes.Buffer
|
|
logging.Configure("agent", false, &out)
|
|
logRecoveryError("upload_grant", "event-log", errors.New("grant denied: https://oss.test/object?Signature=private-key; Bearer private-token; api_key=\"private-quoted\"; {\"prompt\":\"private-prompt\",\"transcript\":[\"private-transcript\"],\"messages\":[{\"content\":\"private-dialogue\"}]}"), "tenant_id", 1, "dispatcher_id", "dispatcher-log", "upload_id", "upload-log", "attempts", 2)
|
|
text := out.String()
|
|
for _, part := range []string{"grant denied", "upload_grant", "event-log", "dispatcher-log", "upload-log", `"attempts":2`} {
|
|
if !strings.Contains(text, part) {
|
|
t.Fatalf("missing %s: %s", part, text)
|
|
}
|
|
}
|
|
for _, secret := range []string{"private-key", "private-token", "private-quoted", "private-prompt", "private-transcript", "private-dialogue"} {
|
|
if strings.Contains(text, secret) {
|
|
t.Fatalf("leaked %s: %s", secret, text)
|
|
}
|
|
}
|
|
}
|