provider_chain_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package provider_test
  2. import (
  3. "os"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
  7. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/provider"
  8. )
  9. func TestProviderChain(t *testing.T) {
  10. env := provider.NewEnvProvider()
  11. pp := provider.NewProfileProvider()
  12. instanceP := provider.NewInstanceCredentialsProvider()
  13. pc := provider.NewProviderChain([]provider.Provider{env, pp, instanceP})
  14. c, err := pc.Resolve()
  15. assert.Equal(t, &credentials.AccessKeyCredential{AccessKeyId: "AccessKeyId", AccessKeySecret: "AccessKeySecret"}, c)
  16. assert.Nil(t, err)
  17. os.Setenv(provider.ENVAccessKeyID, "")
  18. os.Setenv(provider.ENVAccessKeySecret, "")
  19. c, err = pc.Resolve()
  20. assert.Nil(t, c)
  21. assert.EqualError(t, err, "Environmental variable (ALIBABACLOUD_ACCESS_KEY_ID or ALIBABACLOUD_ACCESS_KEY_SECRET) is empty")
  22. os.Unsetenv(provider.ENVAccessKeyID)
  23. os.Unsetenv(provider.ENVCredentialFile)
  24. os.Unsetenv(provider.ENVEcsMetadata)
  25. c, err = pc.Resolve()
  26. assert.Nil(t, c)
  27. assert.EqualError(t, err, "No credential found")
  28. }