core_test.go 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package integration
  2. import (
  3. "os"
  4. "testing"
  5. "time"
  6. "github.com/aliyun/alibaba-cloud-sdk-go/sdk"
  7. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
  8. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func Test_DescribeRegionsWithCommonRequestWithRPC(t *testing.T) {
  12. request := requests.NewCommonRequest()
  13. request.Version = "2014-05-26"
  14. request.Product = "Ecs"
  15. request.ApiName = "DescribeRegions"
  16. request.SetDomain("ecs.aliyuncs.com")
  17. request.TransToAcsRequest()
  18. client, err := sdk.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  19. assert.Nil(t, err)
  20. response, err := client.ProcessCommonRequest(request)
  21. assert.Nil(t, err)
  22. assert.True(t, response.IsSuccess())
  23. }
  24. func Test_DescribeRegionsWithCommonRequestWithSTStoken(t *testing.T) {
  25. assumeresponse, err := createAssumeRole()
  26. assert.Nil(t, err)
  27. credential := assumeresponse.Credentials
  28. request := requests.NewCommonRequest()
  29. request.Version = "2014-05-26"
  30. request.Product = "Ecs"
  31. request.ApiName = "DescribeRegions"
  32. request.SetDomain("ecs.aliyuncs.com")
  33. request.TransToAcsRequest()
  34. client, err := sdk.NewClientWithStsToken(os.Getenv("REGION_ID"), credential.AccessKeyId, credential.AccessKeySecret, credential.SecurityToken)
  35. assert.Nil(t, err)
  36. response, err := client.ProcessCommonRequest(request)
  37. assert.Nil(t, err)
  38. assert.True(t, response.IsSuccess())
  39. }
  40. func Test_DescribeRegionsWithCommonRequestWithHTTPS(t *testing.T) {
  41. request := requests.NewCommonRequest()
  42. request.Version = "2014-05-26"
  43. request.Product = "Ecs"
  44. request.ApiName = "DescribeRegions"
  45. request.SetDomain("ecs.aliyuncs.com")
  46. request.TransToAcsRequest()
  47. request.SetScheme("HTTPS")
  48. client, err := sdk.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  49. assert.Nil(t, err)
  50. response, err := client.ProcessCommonRequest(request)
  51. assert.Nil(t, err)
  52. assert.True(t, response.IsSuccess())
  53. }
  54. func Test_DescribeRegionsWithCommonRequestWithUnicodeSpecificParams(t *testing.T) {
  55. request := requests.NewCommonRequest()
  56. request.Version = "2014-05-26"
  57. request.Product = "Ecs"
  58. request.ApiName = "DescribeRegions"
  59. request.SetDomain("ecs.aliyuncs.com")
  60. request.TransToAcsRequest()
  61. request.SetContent([]byte("sdk&-杭&&&州-test"))
  62. client, err := sdk.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  63. assert.Nil(t, err)
  64. response, err := client.ProcessCommonRequest(request)
  65. assert.Nil(t, err)
  66. assert.True(t, response.IsSuccess())
  67. }
  68. func Test_DescribeRegionsWithCommonRequestWithError(t *testing.T) {
  69. request := requests.NewCommonRequest()
  70. request.Version = "2014-05-26"
  71. request.Product = "Ecs"
  72. request.ApiName = "Describe"
  73. request.SetDomain("ecs.aliyuncs.com")
  74. request.TransToAcsRequest()
  75. client, err := sdk.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  76. assert.Nil(t, err)
  77. _, err = client.ProcessCommonRequest(request)
  78. realerr := err.(errors.Error)
  79. assert.Equal(t, "InvalidParameter", realerr.ErrorCode())
  80. assert.Equal(t, "The specified parameter \"Action or Version\" is not valid.", realerr.Message())
  81. }
  82. func Test_DescribeClustersWithCommonRequestWithROA(t *testing.T) {
  83. client, err := sdk.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  84. assert.Nil(t, err)
  85. request := requests.NewCommonRequest()
  86. request.Method = "GET"
  87. request.Domain = "cs.aliyuncs.com"
  88. request.Version = "2015-12-15"
  89. request.PathPattern = "/clusters/[ClusterId]"
  90. request.QueryParams["RegionId"] = os.Getenv("REGION_ID")
  91. request.TransToAcsRequest()
  92. _, err = client.ProcessCommonRequest(request)
  93. assert.NotNil(t, err)
  94. assert.Contains(t, err.Error(), "Request url is invalid")
  95. }
  96. func Test_DescribeClustersWithCommonRequestWithROAWithSTStoken(t *testing.T) {
  97. assumeresponse, err := createAssumeRole()
  98. assert.Nil(t, err)
  99. credential := assumeresponse.Credentials
  100. client, err := sdk.NewClientWithStsToken(os.Getenv("REGION_ID"), credential.AccessKeyId, credential.AccessKeySecret, credential.SecurityToken)
  101. assert.Nil(t, err)
  102. assert.Nil(t, err)
  103. request := requests.NewCommonRequest()
  104. request.Method = "GET"
  105. request.Domain = "cs.aliyuncs.com"
  106. request.Version = "2015-12-15"
  107. request.PathPattern = "/clusters/[ClusterId]"
  108. request.QueryParams["RegionId"] = os.Getenv("REGION_ID")
  109. request.TransToAcsRequest()
  110. _, err = client.ProcessCommonRequest(request)
  111. assert.NotNil(t, err)
  112. assert.Contains(t, err.Error(), "Request url is invalid")
  113. }
  114. func Test_DescribeClusterDetailWithCommonRequestWithROAWithHTTPS(t *testing.T) {
  115. client, err := sdk.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  116. assert.Nil(t, err)
  117. request := requests.NewCommonRequest()
  118. request.Method = "GET"
  119. request.Domain = "cs.aliyuncs.com"
  120. request.Version = "2015-12-15"
  121. request.SetScheme("HTTPS")
  122. request.PathPattern = "/clusters/[ClusterId]"
  123. request.QueryParams["RegionId"] = os.Getenv("REGION_ID")
  124. request.TransToAcsRequest()
  125. _, err = client.ProcessCommonRequest(request)
  126. assert.NotNil(t, err)
  127. assert.Contains(t, err.Error(), "Request url is invalid")
  128. }
  129. func Test_DescribeClusterDetailWithCommonRequestWithTimeout(t *testing.T) {
  130. client, err := sdk.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  131. assert.Nil(t, err)
  132. request := requests.NewCommonRequest()
  133. request.Domain = "cs.aliyuncs.com"
  134. request.Version = "2015-12-15"
  135. request.SetScheme("HTTPS")
  136. request.PathPattern = "/clusters/[ClusterId]"
  137. request.QueryParams["RegionId"] = os.Getenv("REGION_ID")
  138. request.ReadTimeout = 1 * time.Millisecond
  139. request.ConnectTimeout = 1 * time.Millisecond
  140. request.TransToAcsRequest()
  141. _, err = client.ProcessCommonRequest(request)
  142. assert.NotNil(t, err)
  143. assert.Contains(t, err.Error(), "Connect timeout. Please set a valid ConnectTimeout.")
  144. request.ConnectTimeout = 1 * time.Second
  145. _, err = client.ProcessCommonRequest(request)
  146. assert.NotNil(t, err)
  147. assert.Contains(t, err.Error(), "Read timeout. Please set a valid ReadTimeout.")
  148. }
  149. func Test_CreateInstanceWithCommonRequestWithPolicy(t *testing.T) {
  150. err := createAttachPolicyToRole()
  151. assert.Nil(t, err)
  152. subaccesskeyid, subaccesskeysecret, err := createAccessKey()
  153. assert.Nil(t, err)
  154. client, err := sdk.NewClientWithRamRoleArnAndPolicy(os.Getenv("REGION_ID"), subaccesskeyid, subaccesskeysecret, rolearn, "alice_test", "")
  155. assert.Nil(t, err)
  156. request := requests.NewCommonRequest()
  157. request.Method = "POST"
  158. request.Product = "Ecs"
  159. request.Domain = "ecs.aliyuncs.com"
  160. request.Version = "2014-05-26"
  161. request.SetScheme("HTTPS")
  162. request.ApiName = "CreateInstance"
  163. request.QueryParams["ImageId"] = "win2008r2_64_ent_sp1_en-us_40G_alibase_20170915.vhd"
  164. request.QueryParams["InstanceType"] = "ecs.g5.large"
  165. request.TransToAcsRequest()
  166. _, err = client.ProcessCommonRequest(request)
  167. assert.NotNil(t, err)
  168. assert.Contains(t, err.Error(), "This resource type is not supported; please try other resource types.")
  169. policy := `{
  170. "Version": "1",
  171. "Statement": [
  172. {
  173. "Action": "rds:*",
  174. "Resource": "*",
  175. "Effect": "Allow"
  176. },
  177. {
  178. "Action": "dms:LoginDatabase",
  179. "Resource": "acs:rds:*:*:*",
  180. "Effect": "Allow"
  181. }
  182. ]
  183. }`
  184. client, err = sdk.NewClientWithRamRoleArnAndPolicy(os.Getenv("REGION_ID"), subaccesskeyid, subaccesskeysecret, rolearn, "alice_test", policy)
  185. assert.Nil(t, err)
  186. _, err = client.ProcessCommonRequest(request)
  187. assert.NotNil(t, err)
  188. assert.Contains(t, err.Error(), "User not authorized to operate on the specified resource, or this API doesn't support RAM.")
  189. }