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: &gtm{
    61  				Session: sess,
    62  			},
    63  		},
    64  		"dummy option": {
    65  			options: []Option{dummyOpt()},
    66  			expected: &gtm{
    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  }