api_test.go 10.0 KB

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