env_test.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. package providers
  2. import (
  3. "os"
  4. "strconv"
  5. "testing"
  6. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
  7. )
  8. func TestEnvProvider_Retrieve_NewRamRoleArnCredential(t *testing.T) {
  9. expectedAccesKeyId := "access-key-id"
  10. expectedAccessKeySecret := "access-key-secret"
  11. expectedRoleArn := "role-arn"
  12. expectedRoleSessionName := "role-session-name"
  13. expectedRoleSessionExpiration := 1
  14. if err := os.Setenv(EnvVarAccessKeyID, expectedAccesKeyId); err != nil {
  15. t.Fatal(err)
  16. }
  17. defer os.Unsetenv(EnvVarAccessKeyID)
  18. if err := os.Setenv(EnvVarAccessKeySecret, expectedAccessKeySecret); err != nil {
  19. t.Fatal(err)
  20. }
  21. defer os.Unsetenv(EnvVarAccessKeySecret)
  22. if err := os.Setenv(EnvVarRoleArn, expectedRoleArn); err != nil {
  23. t.Fatal(err)
  24. }
  25. defer os.Unsetenv(EnvVarRoleArn)
  26. if err := os.Setenv(EnvVarRoleSessionName, expectedRoleSessionName); err != nil {
  27. t.Fatal(err)
  28. }
  29. defer os.Unsetenv(EnvVarRoleSessionName)
  30. if err := os.Setenv(EnvVarRoleSessionExpiration, strconv.Itoa(expectedRoleSessionExpiration)); err != nil {
  31. t.Fatal(err)
  32. }
  33. defer os.Unsetenv(EnvVarRoleSessionExpiration)
  34. credential, err := NewEnvCredentialProvider().Retrieve()
  35. if err != nil {
  36. t.Fatal(err)
  37. }
  38. ramRoleArnCredential, ok := credential.(*credentials.RamRoleArnCredential)
  39. if !ok {
  40. t.Fatal("expected AccessKeyCredential")
  41. }
  42. if ramRoleArnCredential.AccessKeyId != expectedAccesKeyId {
  43. t.Fatalf("expected AccessKeyId %s but received %s", expectedAccesKeyId, ramRoleArnCredential.AccessKeyId)
  44. }
  45. if ramRoleArnCredential.AccessKeySecret != expectedAccessKeySecret {
  46. t.Fatalf("expected AccessKeySecret %s but received %s", expectedAccessKeySecret, ramRoleArnCredential.AccessKeySecret)
  47. }
  48. if ramRoleArnCredential.RoleArn != expectedRoleArn {
  49. t.Fatalf("expected RoleArn %s but received %s", expectedRoleArn, ramRoleArnCredential.RoleArn)
  50. }
  51. if ramRoleArnCredential.RoleSessionName != expectedRoleSessionName {
  52. t.Fatalf("expected RoleSessionName %s but received %s", expectedRoleSessionName, ramRoleArnCredential.RoleSessionName)
  53. }
  54. if ramRoleArnCredential.RoleSessionExpiration != expectedRoleSessionExpiration {
  55. t.Fatalf("expected RoleSessionExpiration %d but received %d", expectedRoleSessionExpiration, ramRoleArnCredential.RoleSessionExpiration)
  56. }
  57. }
  58. func TestEnvProvider_Retrieve_NewStsTokenCredential(t *testing.T) {
  59. expectedAccesKeyId := "access-key-id"
  60. expectedAccessKeySecret := "access-key-secret"
  61. expectedAccessKeyStsToken := "access-key-sts-token"
  62. if err := os.Setenv(EnvVarAccessKeyID, expectedAccesKeyId); err != nil {
  63. t.Fatal(err)
  64. }
  65. defer os.Unsetenv(EnvVarAccessKeyID)
  66. if err := os.Setenv(EnvVarAccessKeySecret, expectedAccessKeySecret); err != nil {
  67. t.Fatal(err)
  68. }
  69. defer os.Unsetenv(EnvVarAccessKeySecret)
  70. if err := os.Setenv(EnvVarAccessKeyStsToken, expectedAccessKeyStsToken); err != nil {
  71. t.Fatal(err)
  72. }
  73. defer os.Unsetenv(EnvVarAccessKeyStsToken)
  74. credential, err := NewEnvCredentialProvider().Retrieve()
  75. if err != nil {
  76. t.Fatal(err)
  77. }
  78. stsTokenCredential, ok := credential.(*credentials.StsTokenCredential)
  79. if !ok {
  80. t.Fatal("expected AccessKeyCredential")
  81. }
  82. if stsTokenCredential.AccessKeyId != expectedAccesKeyId {
  83. t.Fatalf("expected AccessKeyId %s but received %s", expectedAccesKeyId, stsTokenCredential.AccessKeyId)
  84. }
  85. if stsTokenCredential.AccessKeySecret != expectedAccessKeySecret {
  86. t.Fatalf("expected AccessKeySecret %s but received %s", expectedAccessKeySecret, stsTokenCredential.AccessKeySecret)
  87. }
  88. if stsTokenCredential.AccessKeyStsToken != expectedAccessKeyStsToken {
  89. t.Fatalf("expected AccessKeyStsToken %s but received %s", expectedAccessKeyStsToken, stsTokenCredential.AccessKeyStsToken)
  90. }
  91. }
  92. func TestEnvProvider_Retrieve_NewAccessKeyCredential(t *testing.T) {
  93. expectedAccesKeyId := "access-key-id"
  94. expectedAccessKeySecret := "access-key-secret"
  95. if err := os.Setenv(EnvVarAccessKeyID, expectedAccesKeyId); err != nil {
  96. t.Fatal(err)
  97. }
  98. defer os.Unsetenv(EnvVarAccessKeyID)
  99. if err := os.Setenv(EnvVarAccessKeySecret, expectedAccessKeySecret); err != nil {
  100. t.Fatal(err)
  101. }
  102. defer os.Unsetenv(EnvVarAccessKeySecret)
  103. credential, err := NewEnvCredentialProvider().Retrieve()
  104. if err != nil {
  105. t.Fatal(err)
  106. }
  107. accessKeyCredential, ok := credential.(*credentials.AccessKeyCredential)
  108. if !ok {
  109. t.Fatal("expected AccessKeyCredential")
  110. }
  111. if accessKeyCredential.AccessKeyId != expectedAccesKeyId {
  112. t.Fatalf("expected AccessKeyId %s but received %s", expectedAccesKeyId, accessKeyCredential.AccessKeyId)
  113. }
  114. if accessKeyCredential.AccessKeySecret != expectedAccessKeySecret {
  115. t.Fatalf("expected AccessKeySecret %s but received %s", expectedAccessKeySecret, accessKeyCredential.AccessKeySecret)
  116. }
  117. }
  118. func TestEnvProvider_Retrieve_NewEcsRamRoleCredential(t *testing.T) {
  119. expectedRoleName := "role-name"
  120. if err := os.Setenv(EnvVarRoleName, expectedRoleName); err != nil {
  121. t.Fatal(err)
  122. }
  123. defer os.Unsetenv(EnvVarRoleName)
  124. credential, err := NewEnvCredentialProvider().Retrieve()
  125. if err != nil {
  126. t.Fatal(err)
  127. }
  128. ecsRamRoleCredential, ok := credential.(*credentials.EcsRamRoleCredential)
  129. if !ok {
  130. t.Fatal("expected AccessKeyCredential")
  131. }
  132. if ecsRamRoleCredential.RoleName != expectedRoleName {
  133. t.Fatalf("expected RoleName %s but received %s", expectedRoleName, ecsRamRoleCredential.RoleName)
  134. }
  135. }
  136. func TestEnvProvider_Retrieve_NewRsaKeyPairCredential(t *testing.T) {
  137. expectedPrivateKey := "private-key"
  138. expectedPublicKeyId := "public-key-id"
  139. expectedSessionExpiration := 1
  140. if err := os.Setenv(EnvVarPrivateKey, expectedPrivateKey); err != nil {
  141. t.Fatal(err)
  142. }
  143. defer os.Unsetenv(EnvVarPrivateKey)
  144. if err := os.Setenv(EnvVarPublicKeyID, expectedPublicKeyId); err != nil {
  145. t.Fatal(err)
  146. }
  147. defer os.Unsetenv(EnvVarPublicKeyID)
  148. if err := os.Setenv(EnvVarSessionExpiration, strconv.Itoa(expectedSessionExpiration)); err != nil {
  149. t.Fatal(err)
  150. }
  151. defer os.Unsetenv(EnvVarSessionExpiration)
  152. credential, err := NewEnvCredentialProvider().Retrieve()
  153. if err != nil {
  154. t.Fatal(err)
  155. }
  156. rsaKeyPairCredential, ok := credential.(*credentials.RsaKeyPairCredential)
  157. if !ok {
  158. t.Fatal("expected AccessKeyCredential")
  159. }
  160. if rsaKeyPairCredential.PrivateKey != expectedPrivateKey {
  161. t.Fatalf("expected PrivateKey %s but received %s", expectedPrivateKey, rsaKeyPairCredential.PrivateKey)
  162. }
  163. if rsaKeyPairCredential.PublicKeyId != expectedPublicKeyId {
  164. t.Fatalf("expected PublicKeyId %s but received %s", expectedPublicKeyId, rsaKeyPairCredential.PublicKeyId)
  165. }
  166. if rsaKeyPairCredential.SessionExpiration != expectedSessionExpiration {
  167. t.Fatalf("expected SessionExpiration %d but received %d", expectedSessionExpiration, rsaKeyPairCredential.SessionExpiration)
  168. }
  169. }
  170. func TestEnvProvider_Retrieve_ErrNoValidCredentialsFound(t *testing.T) {
  171. _, err := NewEnvCredentialProvider().Retrieve()
  172. if err == nil {
  173. t.Fatal("expected ErrNoValidCredentialsFound for empty configuration")
  174. }
  175. if err != ErrNoValidCredentialsFound {
  176. t.Fatal("expected ErrNoValidCredentialsFound for empty configuration")
  177. }
  178. }