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  }