github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/datastream/ds_test.go (about) 1 package datastream 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/require" 14 "github.com/tj/assert" 15 ) 16 17 func mockAPIClient(t *testing.T, mockServer *httptest.Server) DS { 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 30 s, err := session.New( 31 session.WithClient(httpClient), 32 session.WithSigner(&edgegrid.Config{Host: serverURL.Host}), 33 ) 34 assert.NoError(t, err) 35 return Client(s) 36 } 37 38 func TestClient(t *testing.T) { 39 sess, err := session.New() 40 require.NoError(t, err) 41 tests := map[string]struct { 42 options []Option 43 expected *ds 44 }{ 45 "no options provided, return default": { 46 options: nil, 47 expected: &ds{ 48 Session: sess, 49 }, 50 }, 51 "option provided, overwrite session": { 52 options: []Option{func(c *ds) { 53 c.Session = nil 54 }}, 55 expected: &ds{ 56 Session: nil, 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 }