1package signers 2 3import ( 4 "fmt" 5 "testing" 6 "time" 7 8 "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" 9 "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" 10 "github.com/stretchr/testify/assert" 11) 12 13func TestCredentialUpdater_NeedUpdateCredential(t *testing.T) { 14 // default 15 updater := &credentialUpdater{} 16 assert.NotNil(t, updater) 17 assert.True(t, updater.needUpdateCredential()) 18 19 // no need update 20 updater = &credentialUpdater{ 21 inAdvanceScale: 1.0, 22 lastUpdateTimestamp: time.Now().Unix() - 4000, 23 credentialExpiration: 5000, 24 } 25 assert.NotNil(t, updater) 26 assert.False(t, updater.needUpdateCredential()) 27 28 // need update 29 updater = &credentialUpdater{ 30 inAdvanceScale: 1.0, 31 lastUpdateTimestamp: time.Now().Unix() - 10000, 32 credentialExpiration: 5000, 33 } 34 assert.NotNil(t, updater) 35 assert.True(t, updater.needUpdateCredential()) 36} 37 38func TestCredentialUpdater_UpdateCredential(t *testing.T) { 39 updater := &credentialUpdater{} 40 assert.NotNil(t, updater) 41 updater.buildRequestMethod = func() (*requests.CommonRequest, error) { 42 return nil, fmt.Errorf("build request method failed") 43 } 44 45 err := updater.updateCredential() 46 assert.NotNil(t, err) 47 assert.Equal(t, "build request method failed", err.Error()) 48 49 updater.buildRequestMethod = func() (*requests.CommonRequest, error) { 50 return requests.NewCommonRequest(), nil 51 } 52 updater.refreshApi = func(request *requests.CommonRequest) (response *responses.CommonResponse, err error) { 53 return nil, fmt.Errorf("refresh api executed fail") 54 } 55 56 err = updater.updateCredential() 57 assert.NotNil(t, err) 58 assert.Equal(t, "refresh api executed fail", err.Error()) 59 60 updater.refreshApi = func(request *requests.CommonRequest) (response *responses.CommonResponse, err error) { 61 return responses.NewCommonResponse(), nil 62 } 63 64 updater.responseCallBack = func(response *responses.CommonResponse) error { 65 return fmt.Errorf("response callback fail") 66 } 67 68 err = updater.updateCredential() 69 assert.NotNil(t, err) 70 // update timestamp 71 assert.True(t, time.Now().Unix()-updater.lastUpdateTimestamp < 10) 72 assert.Equal(t, "response callback fail", err.Error()) 73 74 updater.responseCallBack = func(response *responses.CommonResponse) error { 75 return nil 76 } 77 78 err = updater.updateCredential() 79 assert.Nil(t, err) 80} 81