@@ -8,10 +8,13 @@ package communication
8
8
import (
9
9
"bytes"
10
10
"context"
11
- "github.com/nginxinc/kubernetes-nginx-ingress/internal/configuration"
12
- "k8s.io/client-go/kubernetes/fake"
11
+ "fmt"
13
12
netHttp "net/http"
13
+ "net/http/httptest"
14
14
"testing"
15
+
16
+ "github.com/nginxinc/kubernetes-nginx-ingress/internal/configuration"
17
+ "k8s.io/client-go/kubernetes/fake"
15
18
)
16
19
17
20
func TestNewRoundTripper (t * testing.T ) {
@@ -47,32 +50,49 @@ func TestNewRoundTripper(t *testing.T) {
47
50
}
48
51
49
52
func TestRoundTripperRoundTrip (t * testing.T ) {
53
+ // Create a mock HTTP server
54
+ mockServer := httptest .NewServer (netHttp .HandlerFunc (func (w netHttp.ResponseWriter , r * netHttp.Request ) {
55
+ w .Header ().Set ("Content-Type" , "application/json" )
56
+ w .Header ().Set ("x-mock-header" , "test-value" )
57
+ w .WriteHeader (netHttp .StatusOK )
58
+ fmt .Fprintln (w , `{"message": "mock response"}` )
59
+ }))
60
+ defer mockServer .Close ()
61
+
62
+ // Initialize dependencies
50
63
k8sClient := fake .NewSimpleClientset ()
51
64
settings , err := configuration .NewSettings (context .Background (), k8sClient )
65
+ if err != nil {
66
+ t .Fatalf ("Unexpected error creating settings: %v" , err )
67
+ }
68
+
52
69
headers := NewHeaders ()
53
70
transport := NewTransport (NewTlsConfig (settings ))
54
71
roundTripper := NewRoundTripper (headers , transport )
55
72
56
- request , err := NewRequest ("GET" , "http://example.com" , nil )
73
+ // Use the mock server URL
74
+ request , err := NewRequest ("GET" , mockServer .URL , nil )
57
75
if err != nil {
58
- t .Fatalf (` Unexpected error: %v` , err )
76
+ t .Fatalf (" Unexpected error: %v" , err )
59
77
}
60
78
61
79
request .Header .Set ("Content-Type" , "application/json" )
62
80
request .Header .Set ("x-nginx-loadbalancer-kubernetes" , "nlk" )
63
81
82
+ // Perform the request
64
83
response , err := roundTripper .RoundTrip (request )
65
84
if err != nil {
66
- t .Fatalf (` Unexpected error: %v` , err )
85
+ t .Fatalf (" Unexpected error: %v" , err )
67
86
}
68
87
69
88
if response == nil {
70
- t .Fatalf (`response should not be nil` )
89
+ t .Fatalf ("Response should not be nil" )
71
90
}
72
91
92
+ // Validate response headers
73
93
headerLen := len (response .Header )
74
94
if headerLen <= 2 {
75
- t .Fatalf (`response.Header should have at least 2 elements, found %d` , headerLen )
95
+ t .Fatalf ("Response headers should have at least 2 elements, found %d" , headerLen )
76
96
}
77
97
}
78
98
0 commit comments