acs_request_test.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package requests
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io"
  6. "testing"
  7. "time"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func Test_AcsRequest(t *testing.T) {
  11. r := defaultBaseRequest()
  12. assert.NotNil(t, r)
  13. // query params
  14. query := r.GetQueryParams()
  15. assert.Equal(t, 0, len(query))
  16. r.addQueryParam("key", "value")
  17. assert.Equal(t, 1, len(query))
  18. assert.Equal(t, "value", query["key"])
  19. // form params
  20. form := r.GetFormParams()
  21. assert.Equal(t, 0, len(form))
  22. r.addFormParam("key", "value")
  23. assert.Equal(t, 1, len(form))
  24. assert.Equal(t, "value", form["key"])
  25. // getter/setter for stringtosign
  26. assert.Equal(t, "", r.GetStringToSign())
  27. r.SetStringToSign("s2s")
  28. assert.Equal(t, "s2s", r.GetStringToSign())
  29. // content type
  30. _, contains := r.GetContentType()
  31. assert.False(t, contains)
  32. r.SetContentType("application/json")
  33. ct, contains := r.GetContentType()
  34. assert.Equal(t, "application/json", ct)
  35. assert.True(t, contains)
  36. // default 3 headers & content-type
  37. headers := r.GetHeaders()
  38. assert.Equal(t, 4, len(headers))
  39. r.addHeaderParam("x-key", "x-key-value")
  40. assert.Equal(t, 5, len(headers))
  41. assert.Equal(t, "x-key-value", headers["x-key"])
  42. // Version
  43. r.SetVersion("2017-06-06")
  44. assert.Equal(t, "2017-06-06", r.GetVersion())
  45. // GetActionName
  46. assert.Equal(t, "", r.GetActionName())
  47. // GetMethod
  48. assert.Equal(t, "GET", r.GetMethod())
  49. r.Method = "POST"
  50. assert.Equal(t, "POST", r.GetMethod())
  51. // Domain
  52. assert.Equal(t, "", r.GetDomain())
  53. r.SetDomain("ecs.aliyuncs.com")
  54. assert.Equal(t, "ecs.aliyuncs.com", r.GetDomain())
  55. // Region
  56. assert.Equal(t, "", r.GetRegionId())
  57. r.RegionId = "cn-hangzhou"
  58. assert.Equal(t, "cn-hangzhou", r.GetRegionId())
  59. // AcceptFormat
  60. assert.Equal(t, "JSON", r.GetAcceptFormat())
  61. r.AcceptFormat = "XML"
  62. assert.Equal(t, "XML", r.GetAcceptFormat())
  63. // GetLocationServiceCode
  64. assert.Equal(t, "", r.GetLocationServiceCode())
  65. // GetLocationEndpointType
  66. assert.Equal(t, "", r.GetLocationEndpointType())
  67. // GetProduct
  68. assert.Equal(t, "", r.GetProduct())
  69. // GetScheme
  70. assert.Equal(t, "", r.GetScheme())
  71. r.SetScheme("HTTPS")
  72. assert.Equal(t, "HTTPS", r.GetScheme())
  73. // GetReadTimeout
  74. assert.Equal(t, 0*time.Second, r.GetReadTimeout())
  75. r.SetReadTimeout(5 * time.Second)
  76. assert.Equal(t, 5*time.Second, r.GetReadTimeout())
  77. // GetConnectTimeout
  78. assert.Equal(t, 0*time.Second, r.GetConnectTimeout())
  79. r.SetConnectTimeout(5 * time.Second)
  80. assert.Equal(t, 5*time.Second, r.GetConnectTimeout())
  81. // GetHTTPSInsecure
  82. assert.True(t, r.GetHTTPSInsecure() == nil)
  83. r.SetHTTPSInsecure(true)
  84. assert.Equal(t, true, *r.GetHTTPSInsecure())
  85. // GetPort
  86. assert.Equal(t, "", r.GetPort())
  87. // GetUserAgent
  88. r.AppendUserAgent("cli", "1.01")
  89. assert.Equal(t, "1.01", r.GetUserAgent()["cli"])
  90. // GetUserAgent
  91. r.AppendUserAgent("cli", "2.02")
  92. assert.Equal(t, "2.02", r.GetUserAgent()["cli"])
  93. // Content
  94. assert.Equal(t, []byte(nil), r.GetContent())
  95. r.SetContent([]byte("The Content"))
  96. assert.True(t, bytes.Equal([]byte("The Content"), r.GetContent()))
  97. }
  98. type AcsRequestTest struct {
  99. *baseRequest
  100. Ontology AcsRequest
  101. Query string `position:"Query" name:"Query"`
  102. Header string `position:"Header" name:"Header"`
  103. Path string `position:"Path" name:"Path"`
  104. Body string `position:"Body" name:"Body"`
  105. Target map[string]interface{} `position:"Query" name:"Target"`
  106. TypeAcs *[]string `position:"type" name:"type" type:"Repeated"`
  107. }
  108. func (r AcsRequestTest) BuildQueries() string {
  109. return ""
  110. }
  111. func (r AcsRequestTest) BuildUrl() string {
  112. return ""
  113. }
  114. func (r AcsRequestTest) GetBodyReader() io.Reader {
  115. return nil
  116. }
  117. func (r AcsRequestTest) GetStyle() string {
  118. return ""
  119. }
  120. func (r AcsRequestTest) addPathParam(key, value string) {
  121. return
  122. }
  123. func Test_AcsRequest_InitParams(t *testing.T) {
  124. r := &AcsRequestTest{
  125. baseRequest: defaultBaseRequest(),
  126. Query: "query value",
  127. Header: "header value",
  128. Path: "path value",
  129. Body: "body value",
  130. Target: map[string]interface{}{
  131. "key": "test",
  132. "value": 1234,
  133. },
  134. }
  135. tmp := []string{r.Query, r.Header}
  136. r.TypeAcs = &tmp
  137. r.addQueryParam("qkey", "qvalue")
  138. InitParams(r)
  139. queries := r.GetQueryParams()
  140. assert.Equal(t, "query value", queries["Query"])
  141. assert.Equal(t, "{\"key\":\"test\",\"value\":1234}", queries["Target"])
  142. headers := r.GetHeaders()
  143. assert.Equal(t, "header value", headers["Header"])
  144. // TODO: check the body & path
  145. }
  146. type StartMPUTaskRequest struct {
  147. *RpcRequest
  148. OwnerId Integer `position:"Query" name:"OwnerId"`
  149. AppId string `position:"Query" name:"AppId"`
  150. ChannelId string `position:"Query" name:"ChannelId"`
  151. TaskId string `position:"Query" name:"TaskId"`
  152. MediaEncode Integer `position:"Query" name:"MediaEncode"`
  153. BackgroundColor Integer `position:"Query" name:"BackgroundColor"`
  154. LayoutIds []Integer `position:"Query" name:"LayoutIds" type:"Repeated"`
  155. StreamURL string `position:"Query" name:"StreamURL"`
  156. }
  157. func Test_RPCRequest_InitParams(t *testing.T) {
  158. channelID := "id"
  159. r := &StartMPUTaskRequest{
  160. RpcRequest: &RpcRequest{},
  161. }
  162. r.init()
  163. r.Domain = "rtc.aliyuncs.com"
  164. r.AppId = "app ID"
  165. r.ChannelId = channelID
  166. r.TaskId = channelID
  167. r.MediaEncode = NewInteger(2)
  168. r.BackgroundColor = NewInteger(0)
  169. r.StreamURL = fmt.Sprintf("rtmp://video-center.alivecdn.com/galaxy/%s_%s?vhost=fast-live.chinalivestream.top", channelID, channelID)
  170. var out []Integer
  171. out = append(out, NewInteger(2))
  172. r.LayoutIds = out
  173. InitParams(r)
  174. queries := r.GetQueryParams()
  175. assert.Equal(t, "2", queries["LayoutIds.1"])
  176. assert.Len(t, queries, 7)
  177. }