@@ -207,11 +207,28 @@ func TestMultipleIpAddressesReverse(t *testing.T) {
207207 assertStatusCode (t , recorder .Result (), http .StatusForbidden )
208208}
209209
210+ func createMockAPIServer (t * testing.T , expectedRequestIP string , response []byte ) * httptest.Server {
211+ return httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {
212+ t .Logf ("Intercepted request: %s %s" , req .Method , req .URL .String ())
213+ t .Logf ("Headers: %v" , req .Header )
214+
215+ if ! strings .Contains (req .URL .String (), expectedRequestIP ) {
216+ t .Errorf ("Unexpected IP: %s (%s)" , req .URL .String ()[1 :], expectedRequestIP )
217+ }
218+ rw .WriteHeader (http .StatusOK )
219+ _ , _ = rw .Write (response )
220+ }))
221+ }
222+
210223func TestMultipleIpAddressesProxy (t * testing.T ) {
224+ mockServer := createMockAPIServer (t , caExampleIP , []byte (`CA` ))
225+ defer mockServer .Close ()
226+
211227 cfg := createTesterConfig ()
212228
213229 cfg .Countries = append (cfg .Countries , "CA" )
214230 cfg .XForwardedForReverseProxy = true
231+ cfg .API = mockServer .URL + "/{ip}"
215232
216233 ctx := context .Background ()
217234 next := http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {})
@@ -236,10 +253,14 @@ func TestMultipleIpAddressesProxy(t *testing.T) {
236253}
237254
238255func TestMultipleIpAddressesProxyReverse (t * testing.T ) {
256+ mockServer := createMockAPIServer (t , chExampleIP , []byte (`CH` ))
257+ defer mockServer .Close ()
258+
239259 cfg := createTesterConfig ()
240260
241261 cfg .Countries = append (cfg .Countries , "CA" )
242262 cfg .XForwardedForReverseProxy = true
263+ cfg .API = mockServer .URL + "/{ip}"
243264
244265 ctx := context .Background ()
245266 next := http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {})
0 commit comments