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