credential_updater_test.go 2.2 KB

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