quorate/services/stalwart/cmd/controller/http_error_test.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)
}
}