package client import ( "net/http" "testing" "time" "github.com/shurcooL/graphql" "github.com/stretchr/testify/assert" ) func TestWithGraphqlClient(t *testing.T) { url := "https://test.edge-preprod.dev/api/v2" qlcl := graphql.NewClient(url, http.DefaultClient) cl, err := New(WithGraphqlClient(qlcl)) assert.NoError(t, err) assert.NotEmpty(t, cl) assert.Equal(t, qlcl, cl.Client) } func TestWithHTTPClient(t *testing.T) { customcl := &http.Client{ Timeout: 2 * time.Hour, } cl, err := New(WithHTTPClient(customcl)) assert.NoError(t, err) assert.NotEmpty(t, cl) assert.Equal(t, customcl.Timeout, cl.HTTPClient.Timeout) } func TestWithUserAgent(t *testing.T) { userAgent := "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)" cl, err := New(WithUserAgent(userAgent)) assert.NoError(t, err) assert.NotEmpty(t, cl) assert.Equal(t, userAgent, cl.userAgent) } func TestWithVersion(t *testing.T) { version := "dev" cl, err := New(WithVersion(version)) assert.NoError(t, err) assert.NotEmpty(t, cl) assert.Equal(t, version, cl.version) } func TestWithBaseURL(t *testing.T) { url := "https://test.edge-preprod.dev/api/v2" cl, err := New(WithBaseURL(url)) assert.NoError(t, err) assert.NotEmpty(t, cl) assert.Equal(t, url, cl.BaseURL.String()) } func TestWithTotp(t *testing.T) { totpToken := "the-special-totp-token" cl, err := New(WithTotp(totpToken)) assert.NoError(t, err) assert.NotEmpty(t, cl) assert.Equal(t, totpToken, cl.totpToken) } func TestWithBearerToken(t *testing.T) { token := "the-special-token" cl, err := New(WithBearerToken(token)) assert.NoError(t, err) assert.NotEmpty(t, cl) assert.Equal(t, token, cl.bearerToken) } func TestWithCredentials(t *testing.T) { loginCredentials := &LoginRequest{ Username: "johndoe", Password: "johndoe", Organization: "test-org", } creds := WithCredentials(loginCredentials.Username, loginCredentials.Password, loginCredentials.Organization) cl, err := New() assert.NoError(t, err) assert.NotEmpty(t, cl) creds(cl) assert.Equal(t, loginCredentials, cl.loginCredentials) } func TestWithTimeout(t *testing.T) { timeout := 2 * time.Minute cl, err := New(WithTimeout(timeout)) assert.NoError(t, err) assert.NotEmpty(t, cl) assert.Equal(t, timeout, cl.timeout) }