@@ -11,8 +11,10 @@ import (
1111 "log"
1212 "net/http"
1313 "net/http/httptest"
14+ "net/url"
1415 "os"
1516 "path/filepath"
17+ "reflect"
1618 "strings"
1719 "testing"
1820 "time"
@@ -232,6 +234,35 @@ func TestRetryWhenWriting(t *testing.T) {
232234 require .Contains (t , logOutput .String (), `"edition_id":"foo-db-name"` )
233235}
234236
237+ // TestNewUpdaterDoesNotMutateDefaultTransport verifies that NewUpdater does not
238+ // modify http.DefaultTransport when a proxy is configured. See issue #488.
239+ func TestNewUpdaterDoesNotMutateDefaultTransport (t * testing.T ) {
240+ defaultTransport := http .DefaultTransport .(* http.Transport )
241+ originalProxy := defaultTransport .Proxy
242+
243+ proxyURL , err := url .Parse ("http://proxy.example.com:8080" )
244+ require .NoError (t , err )
245+
246+ tempDir := t .TempDir ()
247+ config := & Config {
248+ AccountID : 10 ,
249+ LicenseKey : "foo" ,
250+ EditionIDs : []string {"GeoLite2-City" },
251+ DatabaseDirectory : tempDir ,
252+ LockFile : filepath .Join (tempDir , ".geoipupdate.lock" ),
253+ Proxy : proxyURL ,
254+ }
255+
256+ _ , err = NewUpdater (config )
257+ require .NoError (t , err )
258+
259+ require .Equal (
260+ t ,
261+ reflect .ValueOf (originalProxy ).Pointer (),
262+ reflect .ValueOf (defaultTransport .Proxy ).Pointer (),
263+ )
264+ }
265+
235266type mockUpdateClient struct {
236267 i int
237268 outputs []client.DownloadResponse
0 commit comments