github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/dns/dns_test.go (about) 1 package dns 2 3 import ( 4 "crypto/tls" 5 "crypto/x509" 6 "net/http" 7 "net/http/httptest" 8 "net/url" 9 "testing" 10 11 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v8/pkg/edgegrid" 12 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v8/pkg/session" 13 "github.com/stretchr/testify/assert" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func mockAPIClient(t *testing.T, mockServer *httptest.Server) DNS { 18 serverURL, err := url.Parse(mockServer.URL) 19 require.NoError(t, err) 20 certPool := x509.NewCertPool() 21 certPool.AddCert(mockServer.Certificate()) 22 httpClient := &http.Client{ 23 Transport: &http.Transport{ 24 TLSClientConfig: &tls.Config{ 25 RootCAs: certPool, 26 }, 27 }, 28 } 29 s, err := session.New(session.WithClient(httpClient), session.WithSigner(&edgegrid.Config{Host: serverURL.Host})) 30 assert.NoError(t, err) 31 return Client(s) 32 } 33 34 func dummyOpt() Option { 35 return func(*dns) { 36 37 } 38 } 39 40 func TestClient(t *testing.T) { 41 sess, err := session.New() 42 require.NoError(t, err) 43 tests := map[string]struct { 44 options []Option 45 expected *dns 46 }{ 47 "no options provided, return default": { 48 options: nil, 49 expected: &dns{ 50 Session: sess, 51 }, 52 }, 53 "dummy option": { 54 options: []Option{dummyOpt()}, 55 expected: &dns{ 56 Session: sess, 57 }, 58 }, 59 } 60 for name, test := range tests { 61 t.Run(name, func(t *testing.T) { 62 res := Client(sess, test.options...) 63 assert.Equal(t, res, test.expected) 64 }) 65 } 66 }