23 lines
707 B
Go
23 lines
707 B
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
"net/http"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestResponseStatusErrorIncludesBoundedRedactedDetail(t *testing.T) {
|
|
secret := "synthetic-secret"
|
|
response := &http.Response{
|
|
StatusCode: http.StatusBadRequest,
|
|
Body: io.NopCloser(strings.NewReader(`{"errors":["invalid synthetic-secret"]}` + strings.Repeat("x", 8192))),
|
|
}
|
|
err := responseStatusError("synthetic request", response, secret)
|
|
if err == nil || !strings.Contains(err.Error(), "HTTP 400") || !strings.Contains(err.Error(), "[redacted]") {
|
|
t.Fatalf("error = %v", err)
|
|
}
|
|
if strings.Contains(err.Error(), secret) || len(err.Error()) > 4200 {
|
|
t.Fatalf("error is unbounded or contains a secret: %v", err)
|
|
}
|
|
}
|