credential_test.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package integration
  2. import (
  3. "bufio"
  4. "bytes"
  5. "crypto/aes"
  6. "crypto/cipher"
  7. "strings"
  8. "github.com/aliyun/alibaba-cloud-sdk-go/sdk"
  9. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/provider"
  10. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
  11. "github.com/aliyun/alibaba-cloud-sdk-go/services/airec"
  12. "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
  13. "github.com/stretchr/testify/assert"
  14. "os"
  15. "testing"
  16. )
  17. func Test_DescribeRegionsWithRPCrequestWithAK(t *testing.T) {
  18. client, err := ecs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  19. assert.Nil(t, err)
  20. assert.NotNil(t, client)
  21. request := ecs.CreateDescribeRegionsRequest()
  22. request.Scheme = "https"
  23. response, err := client.DescribeRegions(request)
  24. assert.Nil(t, err)
  25. assert.NotNil(t, response)
  26. assert.Equal(t, 36, len(response.RequestId))
  27. assert.True(t, len(response.Regions.Region) > 0)
  28. }
  29. func Test_DescribeRegionsWithRPCrequestWithSTStoken(t *testing.T) {
  30. assumeresponse, err := createAssumeRole()
  31. assert.Nil(t, err)
  32. credential := assumeresponse.Credentials
  33. client, err := ecs.NewClientWithStsToken(os.Getenv("REGION_ID"), credential.AccessKeyId, credential.AccessKeySecret, credential.SecurityToken)
  34. assert.Nil(t, err)
  35. assert.NotNil(t, client)
  36. request := ecs.CreateDescribeRegionsRequest()
  37. request.Scheme = "https"
  38. response, err := client.DescribeRegions(request)
  39. assert.Nil(t, err)
  40. assert.NotNil(t, response)
  41. assert.Equal(t, 36, len(response.RequestId))
  42. assert.True(t, len(response.Regions.Region) > 0)
  43. }
  44. func Test_CreateDiversifyWithROArequestWithAK(t *testing.T) {
  45. client, err := airec.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  46. assert.Nil(t, err)
  47. request := airec.CreateCreateDiversifyRequest()
  48. request.SetDomain("airec.cn-hangzhou.aliyuncs.com")
  49. request.QueryParams["RegionId"] = os.Getenv("REGION_ID")
  50. request.Method = "GET"
  51. response, err := client.CreateDiversify(request)
  52. assert.NotNil(t, err)
  53. assert.Equal(t, 400, response.GetHttpStatus())
  54. assert.Contains(t, err.Error(), "Request url is invalid")
  55. }
  56. func Test_DescribeRegionsWithRPCrequestWithArn(t *testing.T) {
  57. subaccesskeyid, subaccesskeysecret, err := createAccessKey()
  58. assert.Nil(t, err)
  59. client, err := ecs.NewClientWithRamRoleArn(os.Getenv("REGION_ID"), subaccesskeyid, subaccesskeysecret, rolearn, "alice_test")
  60. assert.Nil(t, err)
  61. request := ecs.CreateDescribeRegionsRequest()
  62. request.Scheme = "https"
  63. request.Domain = "ecs.aliyuncs.com"
  64. response, err := client.DescribeRegions(request)
  65. assert.Nil(t, err)
  66. assert.Equal(t, 36, len(response.RequestId))
  67. }
  68. func TestDescribeRegionsWithProviderAndAk(t *testing.T) {
  69. os.Setenv(provider.ENVAccessKeyID, os.Getenv("ACCESS_KEY_ID"))
  70. os.Setenv(provider.ENVAccessKeySecret, os.Getenv("ACCESS_KEY_SECRET"))
  71. request := requests.NewCommonRequest()
  72. request.Version = "2014-05-26"
  73. request.Product = "Ecs"
  74. request.ApiName = "DescribeRegions"
  75. request.SetDomain("ecs.aliyuncs.com")
  76. request.TransToAcsRequest()
  77. client, err := sdk.NewClientWithProvider(os.Getenv("REGION_ID"))
  78. assert.Nil(t, err)
  79. response, err := client.ProcessCommonRequest(request)
  80. assert.Nil(t, err)
  81. assert.True(t, response.IsSuccess())
  82. }
  83. func TestDescribeRegionsWithProviderAndRsaKeyPair(t *testing.T) {
  84. request := requests.NewCommonRequest()
  85. request.Version = "2014-05-26"
  86. request.Product = "Ecs"
  87. request.ApiName = "DescribeRegions"
  88. request.SetDomain("ecs.ap-northeast-1.aliyuncs.com")
  89. request.TransToAcsRequest()
  90. key := os.Getenv("RSA_FILE_AES_KEY")
  91. srcfile, err := os.Open("./encyptfile")
  92. assert.Nil(t, err)
  93. defer srcfile.Close()
  94. buf := new(bytes.Buffer)
  95. read := bufio.NewReader(srcfile)
  96. read.WriteTo(buf)
  97. block, err := aes.NewCipher([]byte(key))
  98. assert.Nil(t, err)
  99. origData := buf.Bytes()
  100. blockdec := cipher.NewCBCDecrypter(block, []byte(key)[:block.BlockSize()])
  101. orig := make([]byte, len(origData))
  102. blockdec.CryptBlocks(orig, origData)
  103. orig = PKCS7UnPadding(orig)
  104. cyphbuf := bytes.NewBuffer(orig)
  105. scan := bufio.NewScanner(cyphbuf)
  106. var data string
  107. for scan.Scan() {
  108. if strings.HasPrefix(scan.Text(), "----") {
  109. continue
  110. }
  111. data += scan.Text() + "\n"
  112. }
  113. client, err := sdk.NewClientWithRsaKeyPair("ap-northeast-1", os.Getenv("PUBLIC_KEY_ID"), data, 3600)
  114. assert.Nil(t, err)
  115. response, err := client.ProcessCommonRequest(request)
  116. assert.Nil(t, err)
  117. assert.True(t, response.IsSuccess())
  118. }
  119. func PKCS7UnPadding(origData []byte) []byte {
  120. length := len(origData)
  121. unpadding := int(origData[length-1])
  122. return origData[:(length - unpadding)]
  123. }
  124. func TestDescribeRegionsWithBearToken(t *testing.T) {
  125. request := requests.NewCommonRequest()
  126. request.Version = "2017-07-05"
  127. request.Product = "CCC"
  128. request.ApiName = "ListRoles "
  129. request.SetDomain("ccc.cn-shanghai.aliyuncs.com")
  130. request.TransToAcsRequest()
  131. client, err := sdk.NewClientWithBearerToken("cn-shanghai", "eyJhbGciOiJSUzI1NiIsImsyaWQiOiJlNE92NnVOUDhsMEY2RmVUMVhvek5wb1NBcVZLblNGRyIsImtpZCI6IkpDOXd4enJocUowZ3RhQ0V0MlFMVWZldkVVSXdsdEZodWk0TzFiaDY3dFUifQ.TjU2UldwZzFzRE1oVEN5UStjYlZLV1dzNW45cFBOSWdNRDhzQmVXYmVpLytWY012MEJqYjdTdnB3SE9LcHBiZkorUGdvclAxRy9GTjdHeldmaWZFVndoa05ueUNTem80dU0rUVFKdDFSY2V0bmFQcml5WFljTDhmNUZ2c1pFd3BhTDFOajVvRW9QVG83S1NVU3JpTFdKQmNnVHB1U094cUd4cGpCeFdXS0pDVnN0L3lzRkp4RTVlSFNzUm1Qa1FBVTVwS1lmaXE0QVFSd3lPQjdYSk1uUGFKU1BiSWhyWVFVS21WOVd5K2d3PT0.jxdCiNimyes3swDRBSxdsgaL4IlOD2Kz49Gf5w0VZ0Xap9ozUyxvSSywGzMrKvCTIoeh9QMCMjCpnt9A-nQxENj3YGAeBk8Wy19uHiT-4OVo-CiCKmKxILpzxcpOptNO-LER1swVLbt0NiTuTH4KB5CUaRwJKIFJuUwa57HcsWbvWQyZa1ms0NNOccNfGJl4177eY2LTUyyXWi4wYNA_L0YMTkZz4sOFM_Mdzks8bHXiSbGkkjfWQy0QblkLz6Bboh1OYlg3_RCLSWby_FMNoxU_eG2lGAsDnYxZDmCAq2jedY0x1RzZodo9HYRQN7DujlBhfzqm4hOBNvA3LiJfzw")
  132. assert.Nil(t, err)
  133. response, err := client.ProcessCommonRequest(request)
  134. assert.True(t, strings.Contains(err.Error(), "Bearertoken has expired"))
  135. assert.False(t, response.IsSuccess())
  136. }