...

Source file src/github.com/aliyun/credentials-go/credentials/ecs_ram_role_test.go

Documentation: github.com/aliyun/credentials-go/credentials

     1  package credentials
     2  
     3  import (
     4  	"errors"
     5  	"net/http"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func Test_EcsRAmRoleCredential(t *testing.T) {
    12  	auth := newEcsRAMRoleCredential("go sdk", 0.5, nil)
    13  	origTestHookDo := hookDo
    14  	defer func() { hookDo = origTestHookDo }()
    15  
    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  	accesskeyId, err := auth.GetAccessKeyId()
    22  	assert.NotNil(t, err)
    23  	assert.Equal(t, "refresh Ecs sts token err: sdk test", err.Error())
    24  	assert.Equal(t, "", *accesskeyId)
    25  
    26  	hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) {
    27  		return func(req *http.Request) (*http.Response, error) {
    28  			return mockResponse(300, ``, nil)
    29  		}
    30  	}
    31  	accesskeyId, err = auth.GetAccessKeyId()
    32  	assert.NotNil(t, err)
    33  	assert.Equal(t, "refresh Ecs sts token err: httpStatus: 300, message = ", err.Error())
    34  	assert.Equal(t, "", *accesskeyId)
    35  
    36  	accesskeySecret, err := auth.GetAccessKeySecret()
    37  	assert.NotNil(t, err)
    38  	assert.Equal(t, "refresh Ecs sts token err: httpStatus: 300, message = ", err.Error())
    39  	assert.Equal(t, "", *accesskeySecret)
    40  
    41  	ststoken, err := auth.GetSecurityToken()
    42  	assert.NotNil(t, err)
    43  	assert.Equal(t, "refresh Ecs sts token err: httpStatus: 300, message = ", err.Error())
    44  	assert.Equal(t, "", *ststoken)
    45  
    46  	assert.Equal(t, "", *auth.GetBearerToken())
    47  
    48  	assert.Equal(t, "ecs_ram_role", *auth.GetType())
    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(400, `role`, nil)
    53  		}
    54  	}
    55  	auth.RoleName = ""
    56  	accesskeyId, err = auth.GetAccessKeyId()
    57  	assert.NotNil(t, err)
    58  	assert.Equal(t, "refresh Ecs sts token err: httpStatus: 400, message = role", err.Error())
    59  
    60  	hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) {
    61  		return func(req *http.Request) (*http.Response, error) {
    62  			return mockResponse(200, `role`, nil)
    63  		}
    64  	}
    65  	accesskeyId, err = auth.GetAccessKeyId()
    66  	assert.NotNil(t, err)
    67  	assert.Equal(t, "refresh Ecs sts token err: Json Unmarshal fail: invalid character 'r' looking for beginning of value", err.Error())
    68  	hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) {
    69  		return func(req *http.Request) (*http.Response, error) {
    70  			return mockResponse(200, `"AccessKeyId":"accessKeyId","AccessKeySecret":"accessKeySecret","SecurityToken":"securitytoken","Expiration":"expiration"`, nil)
    71  		}
    72  	}
    73  	auth.RoleName = "role"
    74  	accesskeyId, err = auth.GetAccessKeyId()
    75  	assert.NotNil(t, err)
    76  	assert.Equal(t, "refresh Ecs sts token err: Json Unmarshal fail: invalid character ':' after top-level value", err.Error())
    77  	assert.Equal(t, "", *accesskeyId)
    78  
    79  	hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) {
    80  		return func(req *http.Request) (*http.Response, error) {
    81  			return mockResponse(200, `{"AccessKeySecret":"accessKeySecret","SecurityToken":"securitytoken","Expiration":"expiration","Code":"fail"}`, nil)
    82  		}
    83  	}
    84  	accesskeyId, err = auth.GetAccessKeyId()
    85  	assert.NotNil(t, err)
    86  	assert.Equal(t, "refresh Ecs sts token err: Code is not Success", err.Error())
    87  	assert.Equal(t, "", *accesskeyId)
    88  
    89  	hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) {
    90  		return func(req *http.Request) (*http.Response, error) {
    91  			return mockResponse(200, `{"AccessKeySecret":"accessKeySecret","SecurityToken":"securitytoken","Expiration":"expiration","Code":"Success"}`, nil)
    92  		}
    93  	}
    94  	accesskeyId, err = auth.GetAccessKeyId()
    95  	assert.NotNil(t, err)
    96  	assert.Equal(t, "refresh Ecs sts token err: AccessKeyId: , AccessKeySecret: accessKeySecret, SecurityToken: securitytoken, Expiration: expiration", err.Error())
    97  	assert.Equal(t, "", *accesskeyId)
    98  
    99  	hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) {
   100  		return func(req *http.Request) (*http.Response, error) {
   101  			return mockResponse(200, `{"AccessKeyId":"accessKeyId","AccessKeySecret":"accessKeySecret","SecurityToken":"securitytoken","Expiration":"2018-01-02T15:04:05Z","Code":"Success"}`, nil)
   102  		}
   103  	}
   104  	accesskeyId, err = auth.GetAccessKeyId()
   105  	assert.Nil(t, err)
   106  	assert.Equal(t, "accessKeyId", *accesskeyId)
   107  
   108  	accesskeySecret, err = auth.GetAccessKeySecret()
   109  	assert.Nil(t, err)
   110  	assert.Equal(t, "accessKeySecret", *accesskeySecret)
   111  
   112  	ststoken, err = auth.GetSecurityToken()
   113  	assert.Nil(t, err)
   114  	assert.Equal(t, "securitytoken", *ststoken)
   115  
   116  	err = errors.New("credentials")
   117  	err = hookParse(err)
   118  	assert.Equal(t, "credentials", err.Error())
   119  
   120  	cred, err := auth.GetCredential()
   121  	assert.Nil(t, err)
   122  	assert.Equal(t, "accessKeyId", *cred.AccessKeyId)
   123  	assert.Equal(t, "accessKeySecret", *cred.AccessKeySecret)
   124  	assert.Equal(t, "securitytoken", *cred.SecurityToken)
   125  	assert.Nil(t, cred.BearerToken)
   126  	assert.Equal(t, "ecs_ram_role", *cred.Type)
   127  
   128  	originHookParse := hookParse
   129  	hookParse = func(err error) error {
   130  		return errors.New("error parse")
   131  	}
   132  	defer func() {
   133  		hookParse = originHookParse
   134  	}()
   135  	accesskeyId, err = auth.GetAccessKeyId()
   136  	assert.Equal(t, "refresh Ecs sts token err: error parse", err.Error())
   137  	assert.Equal(t, "", *accesskeyId)
   138  }
   139  

View as plain text