Skip to content

Commit d91af09

Browse files
committed
Refactor header handling and add unit tests
1 parent 8eb8d28 commit d91af09

File tree

3 files changed

+83
-176
lines changed

3 files changed

+83
-176
lines changed

headers/headers_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// headers/headers_test.go
2+
package headers
3+
4+
import (
5+
"net/http"
6+
"net/http/httptest"
7+
"testing"
8+
9+
"github.com/deploymenttheory/go-api-http-client/authenticationhandler"
10+
"github.com/deploymenttheory/go-api-http-client/logger"
11+
"github.com/deploymenttheory/go-api-http-client/mocklogger"
12+
"github.com/stretchr/testify/assert"
13+
"github.com/stretchr/testify/mock"
14+
)
15+
16+
func TestSetAuthorization(t *testing.T) {
17+
req := httptest.NewRequest(http.MethodGet, "http://example.com", nil)
18+
mockLog := mocklogger.NewMockLogger()
19+
mockLog.On("Debug", mock.Anything, mock.Anything).Once()
20+
21+
token := "test-token"
22+
authTokenHandler := &authenticationhandler.AuthTokenHandler{Token: token}
23+
24+
headerHandler := NewHeaderHandler(req, mockLog, nil, authTokenHandler)
25+
headerHandler.SetAuthorization()
26+
27+
assert.Equal(t, "Bearer "+token, req.Header.Get("Authorization"), "Authorization header should be correctly set")
28+
mockLog.AssertExpectations(t)
29+
}
30+
31+
func TestSetContentType(t *testing.T) {
32+
req := httptest.NewRequest(http.MethodGet, "http://example.com", nil)
33+
mockLog := mocklogger.NewMockLogger()
34+
35+
contentType := "application/json"
36+
headerHandler := NewHeaderHandler(req, mockLog, nil, nil)
37+
headerHandler.SetContentType(contentType)
38+
39+
assert.Equal(t, contentType, req.Header.Get("Content-Type"), "Content-Type header should be correctly set")
40+
}
41+
42+
func TestLogHeaders(t *testing.T) {
43+
req := httptest.NewRequest(http.MethodGet, "http://example.com", nil)
44+
mockLog := mocklogger.NewMockLogger()
45+
mockLog.On("Debug", mock.Anything, mock.Anything).Once()
46+
mockLog.SetLevel(logger.LogLevelDebug)
47+
48+
headerHandler := NewHeaderHandler(req, mockLog, nil, nil)
49+
headerHandler.LogHeaders(true)
50+
51+
mockLog.AssertExpectations(t)
52+
}

headers/headers_test.go.TODO

Lines changed: 0 additions & 176 deletions
This file was deleted.

headers/redact/redact_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// headers/redact/redact_test.go
2+
package redact
3+
4+
import (
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
// TestRedactSensitiveHeaderData tests the RedactSensitiveHeaderData function to ensure it correctly redacts sensitive data.
11+
func TestRedactSensitiveHeaderData(t *testing.T) {
12+
cases := []struct {
13+
name string
14+
hideSensitiveData bool
15+
key string
16+
value string
17+
expected string
18+
}{
19+
{"Sensitive Key With Redaction", true, "AccessToken", "some-sensitive-token", "REDACTED"},
20+
{"Sensitive Key Without Redaction", false, "AccessToken", "some-sensitive-token", "some-sensitive-token"},
21+
{"Non-Sensitive Key With Redaction", true, "User-Agent", "MyCustomAgent", "MyCustomAgent"},
22+
{"Non-Sensitive Key Without Redaction", false, "User-Agent", "MyCustomAgent", "MyCustomAgent"},
23+
}
24+
25+
for _, tc := range cases {
26+
t.Run(tc.name, func(t *testing.T) {
27+
result := RedactSensitiveHeaderData(tc.hideSensitiveData, tc.key, tc.value)
28+
assert.Equal(t, tc.expected, result, "Redacted value should match the expected outcome")
29+
})
30+
}
31+
}

0 commit comments

Comments
 (0)