api_test.go 11 KB

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