github.com/aliyun/credentials-go@v1.4.7/credentials/uri_credential_test.go (about) 1 package credentials 2 3 import ( 4 "errors" 5 "net/http" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestURLCredentialsProvider_updateCredential(t *testing.T) { 12 provider := newURLCredential("http://127.0.0.1") 13 14 origTestHookDo := hookDo 15 defer func() { hookDo = origTestHookDo }() 16 hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) { 17 return func(req *http.Request) (*http.Response, error) { 18 return mockResponse(300, ``, errors.New("sdk test")) 19 } 20 } 21 22 cred, err := provider.GetCredential() 23 assert.NotNil(t, err) 24 assert.Equal(t, "get credentials from http://127.0.0.1 failed with error: sdk test", err.Error()) 25 assert.Nil(t, cred) 26 27 _, err = provider.GetAccessKeyId() 28 assert.NotNil(t, err) 29 assert.Equal(t, "get credentials from http://127.0.0.1 failed with error: sdk test", err.Error()) 30 31 _, err = provider.GetAccessKeySecret() 32 assert.NotNil(t, err) 33 assert.Equal(t, "get credentials from http://127.0.0.1 failed with error: sdk test", err.Error()) 34 35 _, err = provider.GetSecurityToken() 36 assert.NotNil(t, err) 37 assert.Equal(t, "get credentials from http://127.0.0.1 failed with error: sdk test", err.Error()) 38 39 hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) { 40 return func(req *http.Request) (*http.Response, error) { 41 return mockResponse(200, `invalid json`, nil) 42 } 43 } 44 45 cred, err = provider.GetCredential() 46 assert.NotNil(t, err) 47 assert.Equal(t, "get credentials from http://127.0.0.1 failed with error, json unmarshal fail: invalid character 'i' looking for beginning of value", err.Error()) 48 assert.Nil(t, cred) 49 50 hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) { 51 return func(req *http.Request) (*http.Response, error) { 52 return mockResponse(200, `{}`, nil) 53 } 54 } 55 56 cred, err = provider.GetCredential() 57 assert.NotNil(t, err) 58 assert.Equal(t, "get credentials failed: AccessKeyId: , AccessKeySecret: , SecurityToken: , Expiration: ", err.Error()) 59 assert.Nil(t, cred) 60 61 hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) { 62 return func(req *http.Request) (*http.Response, error) { 63 return mockResponse(200, `{"AccessKeyId":"akid", "AccessKeySecret":"aksecret","SecurityToken":"sts","Expiration":"2006-01-02T15:04:05Z"}`, nil) 64 } 65 } 66 67 cred, err = provider.GetCredential() 68 assert.Nil(t, err) 69 assert.NotNil(t, cred) 70 assert.Equal(t, "akid", *cred.AccessKeyId) 71 assert.Equal(t, "aksecret", *cred.AccessKeySecret) 72 assert.Equal(t, "sts", *cred.SecurityToken) 73 74 akid, err := provider.GetAccessKeyId() 75 assert.Nil(t, err) 76 assert.Equal(t, "akid", *akid) 77 78 aksecret, err := provider.GetAccessKeySecret() 79 assert.Nil(t, err) 80 assert.Equal(t, "aksecret", *aksecret) 81 82 sts, err := provider.GetSecurityToken() 83 assert.Nil(t, err) 84 assert.Equal(t, "sts", *sts) 85 } 86 87 func TestURLCredentialsProviderGetBearerToken(t *testing.T) { 88 provider := newURLCredential("http://127.0.0.1") 89 assert.Equal(t, "", *provider.GetBearerToken()) 90 } 91 92 func TestURLCredentialsProviderGetType(t *testing.T) { 93 provider := newURLCredential("http://127.0.0.1") 94 assert.Equal(t, "credential_uri", *provider.GetType()) 95 }