instance_credentials_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package provider_test
  2. import (
  3. "os"
  4. "testing"
  5. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/provider"
  8. )
  9. func TestInstanceCredentialsProvider(t *testing.T) {
  10. p := provider.NewInstanceCredentialsProvider()
  11. c, err := p.Resolve()
  12. assert.Nil(t, c)
  13. assert.Nil(t, err)
  14. os.Setenv(provider.ENVEcsMetadata, "")
  15. c, err = p.Resolve()
  16. assert.Nil(t, c)
  17. assert.EqualError(t, err, "Environmental variable 'ALIBABA_CLOUD_ECS_METADATA' are empty")
  18. os.Setenv(provider.ENVEcsMetadata, "test")
  19. c, err = p.Resolve()
  20. assert.Nil(t, c)
  21. assert.NotNil(t, err)
  22. provider.HookGet = func(fn func(string) (int, []byte, error)) func(string) (int, []byte, error) {
  23. return func(string) (int, []byte, error) {
  24. return 404, []byte(""), nil
  25. }
  26. }
  27. c, err = p.Resolve()
  28. assert.Nil(t, c)
  29. assert.EqualError(t, err, "The role was not found in the instance")
  30. provider.HookGet = func(fn func(string) (int, []byte, error)) func(string) (int, []byte, error) {
  31. return func(string) (int, []byte, error) {
  32. return 400, []byte(""), nil
  33. }
  34. }
  35. c, err = p.Resolve()
  36. assert.Nil(t, c)
  37. assert.EqualError(t, err, "Received 400 when getting security credentials for test")
  38. provider.HookGet = func(fn func(string) (int, []byte, error)) func(string) (int, []byte, error) {
  39. return func(string) (int, []byte, error) {
  40. return 200, []byte(`{
  41. "AccessKeyId" : "STS.*******",
  42. "AccessKeySecret" : "*******",
  43. "Expiration" : "2019-01-28T15:15:56Z",
  44. "SecurityToken" : "bbbbb",
  45. "LastUpdated" : "2019-01-28T09:15:55Z",
  46. "Code" : "Success"
  47. }`), nil
  48. }
  49. }
  50. c, err = p.Resolve()
  51. assert.Nil(t, err)
  52. assert.Equal(t, credentials.NewStsTokenCredential("STS.*******", "*******", "bbbbb"), c)
  53. }