| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package log
- import (
- "net/http"
- "net/http/httptest"
- "strings"
- "testing"
- )
- func TestHTTPRoundTripLogger(t *testing.T) {
- // Create a test server that returns a 500 error
- server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- w.Header().Set("Content-Type", "application/json")
- w.Header().Set("X-Custom-Header", "test-value")
- w.WriteHeader(http.StatusInternalServerError)
- w.Write([]byte(`{"error": "Internal server error", "code": 500}`))
- }))
- defer server.Close()
- // Create HTTP client with logging
- client := NewHTTPClient()
- // Make a request
- req, err := http.NewRequestWithContext(
- t.Context(),
- http.MethodPost,
- server.URL,
- strings.NewReader(`{"test": "data"}`),
- )
- if err != nil {
- t.Fatal(err)
- }
- req.Header.Set("Content-Type", "application/json")
- req.Header.Set("Authorization", "Bearer secret-token")
- resp, err := client.Do(req)
- if err != nil {
- t.Fatal(err)
- }
- defer resp.Body.Close()
- // Verify response
- if resp.StatusCode != http.StatusInternalServerError {
- t.Errorf("Expected status code 500, got %d", resp.StatusCode)
- }
- }
- func TestFormatHeaders(t *testing.T) {
- headers := http.Header{
- "Content-Type": []string{"application/json"},
- "Authorization": []string{"Bearer secret-token"},
- "X-API-Key": []string{"api-key-123"},
- "User-Agent": []string{"test-agent"},
- }
- formatted := formatHeaders(headers)
- // Check that sensitive headers are redacted
- if formatted["Authorization"][0] != "[REDACTED]" {
- t.Error("Authorization header should be redacted")
- }
- if formatted["X-API-Key"][0] != "[REDACTED]" {
- t.Error("X-API-Key header should be redacted")
- }
- // Check that non-sensitive headers are preserved
- if formatted["Content-Type"][0] != "application/json" {
- t.Error("Content-Type header should be preserved")
- }
- if formatted["User-Agent"][0] != "test-agent" {
- t.Error("User-Agent header should be preserved")
- }
- }
|