api_test.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. package integration
  2. import (
  3. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints"
  4. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
  5. "github.com/aliyun/alibaba-cloud-sdk-go/services/airec"
  6. "github.com/aliyun/alibaba-cloud-sdk-go/services/bssopenapi"
  7. "github.com/aliyun/alibaba-cloud-sdk-go/services/cdn"
  8. "github.com/aliyun/alibaba-cloud-sdk-go/services/cs"
  9. "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
  10. "github.com/aliyun/alibaba-cloud-sdk-go/services/ram"
  11. "github.com/aliyun/alibaba-cloud-sdk-go/services/rds"
  12. "github.com/aliyun/alibaba-cloud-sdk-go/services/slb"
  13. "github.com/aliyun/alibaba-cloud-sdk-go/services/vpc"
  14. "github.com/stretchr/testify/assert"
  15. "net/http"
  16. "net/http/httptest"
  17. "os"
  18. "strings"
  19. "testing"
  20. )
  21. var (
  22. securityGroupId = ""
  23. flag = false
  24. )
  25. func Test_CreateDiversifyWithROArequestWithXMLWithGet(t *testing.T) {
  26. client, err := airec.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  27. assert.Nil(t, err)
  28. request := airec.CreateCreateDiversifyRequest()
  29. request.SetDomain("airec.cn-hangzhou.aliyuncs.com")
  30. request.SetContentType("XML")
  31. request.SetScheme("HTTPS")
  32. response, err := client.CreateDiversify(request)
  33. assert.NotNil(t, err)
  34. assert.Equal(t, 400, response.GetHttpStatus())
  35. assert.Contains(t, err.Error(), "Request url is invalid")
  36. }
  37. func Test_ScaleClusterWithROArequestWithXMLWithPUT(t *testing.T) {
  38. client, err := cs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  39. assert.Nil(t, err)
  40. request := cs.CreateScaleClusterRequest()
  41. request.SetContentType("XML")
  42. request.SetScheme("HTTPS")
  43. response, err := client.ScaleCluster(request)
  44. assert.NotNil(t, err)
  45. assert.Equal(t, 400, response.GetHttpStatus())
  46. assert.Contains(t, err.Error(), "Request url is invalid")
  47. }
  48. func Test_CreateClusterTokenWithROArequestWithXMLWithPOST(t *testing.T) {
  49. client, err := cs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  50. assert.Nil(t, err)
  51. request := cs.CreateCreateClusterRequest()
  52. request.SetContentType("XML")
  53. request.SetScheme("HTTPS")
  54. response, err := client.CreateCluster(request)
  55. assert.NotNil(t, err)
  56. assert.Equal(t, 400, response.GetHttpStatus())
  57. assert.Contains(t, err.Error(), "Request body can't be empty")
  58. }
  59. func Test_DeleteClusterWithROArequestWithXMLWithDelete(t *testing.T) {
  60. client, err := cs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  61. assert.Nil(t, err)
  62. request := cs.CreateDeleteClusterRequest()
  63. request.SetContentType("XML")
  64. request.SetScheme("HTTPS")
  65. response, err := client.DeleteCluster(request)
  66. assert.NotNil(t, err)
  67. assert.Equal(t, 400, response.GetHttpStatus())
  68. assert.Contains(t, err.Error(), "Request url is invalid")
  69. }
  70. func Test_DeleteClusterWithROArequestWithJSONWithDelete(t *testing.T) {
  71. client, err := cs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  72. assert.Nil(t, err)
  73. request := cs.CreateDeleteClusterRequest()
  74. request.SetContentType("JSON")
  75. request.SetScheme("HTTPS")
  76. response, err := client.DeleteCluster(request)
  77. assert.NotNil(t, err)
  78. assert.Equal(t, 400, response.GetHttpStatus())
  79. assert.Contains(t, err.Error(), "Request url is invalid")
  80. }
  81. func Test_ScaleClusterWithROArequestWithJSONWithPUT(t *testing.T) {
  82. client, err := cs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  83. assert.Nil(t, err)
  84. request := cs.CreateScaleClusterRequest()
  85. request.SetContentType("JSON")
  86. request.SetScheme("HTTPS")
  87. response, err := client.ScaleCluster(request)
  88. assert.NotNil(t, err)
  89. assert.Equal(t, 400, response.GetHttpStatus())
  90. assert.Contains(t, err.Error(), "Request url is invalid")
  91. }
  92. func Test_CreateSecurityGroupWithRPCrequestWithJSONWithNestingparametersWithPOST(t *testing.T) {
  93. client, err := ecs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  94. assert.Nil(t, err)
  95. request := ecs.CreateCreateSecurityGroupRequest()
  96. request.SetContentType("JSON")
  97. tag := ecs.CreateSecurityGroupTag{
  98. Key: "test",
  99. Value: "test",
  100. }
  101. request.Tag = &[]ecs.CreateSecurityGroupTag{tag}
  102. response, err := client.CreateSecurityGroup(request)
  103. assert.Nil(t, err)
  104. assert.True(t, response.IsSuccess())
  105. assert.Equal(t, 36, len(response.RequestId))
  106. assert.True(t, len(response.SecurityGroupId) > 0)
  107. securityGroupId = response.SecurityGroupId
  108. }
  109. func Test_ECS_DescribeSecurityGroupsWithRPCrequestWithJSONWithNestingparametersWithGET(t *testing.T) {
  110. client, err := ecs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  111. assert.Nil(t, err)
  112. request := ecs.CreateDescribeSecurityGroupsRequest()
  113. request.SetContentType("JSON")
  114. request.Method = requests.GET
  115. response, err := client.DescribeSecurityGroups(request)
  116. assert.Nil(t, err)
  117. assert.True(t, response.IsSuccess())
  118. for _, securitygroup := range response.SecurityGroups.SecurityGroup {
  119. if securitygroup.SecurityGroupId == securityGroupId {
  120. flag = true
  121. break
  122. }
  123. }
  124. assert.Equal(t, 36, len(response.RequestId))
  125. assert.True(t, flag)
  126. flag = false
  127. }
  128. func Test_ECS_DeleteSecurityGroupWithRPCrequestWithJSONWithPOST(t *testing.T) {
  129. client, err := ecs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  130. assert.Nil(t, err)
  131. request := ecs.CreateDeleteSecurityGroupRequest()
  132. request.SetContentType("JSON")
  133. request.SecurityGroupId = securityGroupId
  134. response, err := client.DeleteSecurityGroup(request)
  135. assert.Nil(t, err)
  136. assert.True(t, response.IsSuccess())
  137. assert.Equal(t, 36, len(response.RequestId))
  138. securityGroupId = ""
  139. }
  140. func Test_RDS_DescribeDBInstancesWithRPCrequest(t *testing.T) {
  141. client, err := rds.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  142. assert.Nil(t, err)
  143. assert.NotNil(t, client)
  144. request := rds.CreateDescribeDBInstancesRequest()
  145. request.SetContentType("JSON")
  146. response, err := client.DescribeDBInstances(request)
  147. assert.Nil(t, err)
  148. assert.NotNil(t, response)
  149. }
  150. func Test_CDN_DescribeCdnDomainDetailWithRPCrequest(t *testing.T) {
  151. client, err := cdn.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  152. assert.Nil(t, err)
  153. assert.NotNil(t, client)
  154. request := cdn.CreateDescribeRefreshTasksRequest()
  155. response, err := client.DescribeRefreshTasks(request)
  156. assert.Nil(t, err)
  157. assert.NotNil(t, response)
  158. assert.Equal(t, 36, len(response.RequestId))
  159. }
  160. func Test_RAM_ListRolesWithRPCrequest(t *testing.T) {
  161. client, err := ram.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  162. assert.Nil(t, err)
  163. request := ram.CreateListRolesRequest()
  164. request.Scheme = "HTTPS"
  165. response, err := client.ListRoles(request)
  166. assert.Nil(t, err)
  167. assert.True(t, response.IsSuccess())
  168. assert.Equal(t, 36, len(response.RequestId))
  169. }
  170. func Test_SLB_DescribeRegionsWithRPCrequest(t *testing.T) {
  171. client, err := slb.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  172. assert.Nil(t, err)
  173. request := slb.CreateDescribeRegionsRequest()
  174. response, err := client.DescribeRegions(request)
  175. assert.Nil(t, err)
  176. assert.True(t, response.IsSuccess())
  177. assert.Equal(t, 36, len(response.RequestId))
  178. assert.True(t, len(response.Regions.Region) > 0)
  179. }
  180. func Test_VPC_DescribeRegionsWithRPCrequest(t *testing.T) {
  181. client, err := vpc.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  182. assert.Nil(t, err)
  183. request := vpc.CreateDescribeRegionsRequest()
  184. response, err := client.DescribeRegions(request)
  185. assert.Nil(t, err)
  186. assert.True(t, response.IsSuccess())
  187. assert.Equal(t, 36, len(response.RequestId))
  188. assert.True(t, len(response.Regions.Region) > 0)
  189. }
  190. func mockServer(status int, json string) (server *httptest.Server) {
  191. // Start a test server locally.
  192. ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  193. w.WriteHeader(status)
  194. w.Write([]byte(json))
  195. return
  196. }))
  197. return ts
  198. }
  199. func Test_DescribeRegionsWithRPCrequestWithunicode(t *testing.T) {
  200. client, err := ecs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  201. assert.Nil(t, err)
  202. request := ecs.CreateDescribeRegionsRequest()
  203. request.Scheme = "HTTP"
  204. ts := mockServer(400, `{"Code": "&&&&杭州&&&"}`)
  205. defer ts.Close()
  206. domain := strings.Replace(ts.URL, "http://", "", 1)
  207. request.Domain = domain
  208. response, err := client.DescribeRegions(request)
  209. assert.NotNil(t, err)
  210. assert.Equal(t, 400, response.GetHttpStatus())
  211. assert.Equal(t, "{\"Code\": \"&&&&杭州&&&\"}", response.GetHttpContentString())
  212. }
  213. func Test_DescribeRegionsWithRPCrequestWithescape(t *testing.T) {
  214. client, err := ecs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  215. assert.Nil(t, err)
  216. request := ecs.CreateDescribeRegionsRequest()
  217. request.Scheme = "HTTP"
  218. ts := mockServer(400, `{"Code": "\t"}`)
  219. defer ts.Close()
  220. domain := strings.Replace(ts.URL, "http://", "", 1)
  221. request.Domain = domain
  222. response, err := client.DescribeRegions(request)
  223. assert.NotNil(t, err)
  224. assert.Equal(t, 400, response.GetHttpStatus())
  225. assert.Equal(t, "{\"Code\": \"\\t\"}", response.GetHttpContentString())
  226. }
  227. func Test_DescribeRegionsWithRPCrequestWith3XX(t *testing.T) {
  228. client, err := ecs.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  229. assert.Nil(t, err)
  230. request := ecs.CreateDescribeRegionsRequest()
  231. request.Scheme = "HTTP"
  232. ts := mockServer(307, `{"error"}`)
  233. defer ts.Close()
  234. domain := strings.Replace(ts.URL, "http://", "", 1)
  235. request.Domain = domain
  236. response, err := client.DescribeRegions(request)
  237. assert.NotNil(t, err)
  238. assert.Equal(t, 307, response.GetHttpStatus())
  239. assert.Equal(t, "{\"error\"}", response.GetHttpContentString())
  240. }
  241. func Test_QueryAvaliableInstances(t *testing.T) {
  242. client, err := bssopenapi.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  243. assert.Nil(t, err)
  244. request := bssopenapi.CreateQueryAvailableInstancesRequest()
  245. endpoints.AddEndpointMapping(os.Getenv("REGION_ID"), "BssOpenApi", "business.aliyuncs.com")
  246. response, err := client.QueryAvailableInstances(request)
  247. assert.Nil(t, err)
  248. assert.True(t, response.IsSuccess())
  249. assert.Equal(t, 36, len(response.RequestId))
  250. }