acs_request_test.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. package requests
  2. import (
  3. "bytes"
  4. "io"
  5. "testing"
  6. "time"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func Test_AcsRequest(t *testing.T) {
  10. r := defaultBaseRequest()
  11. assert.NotNil(t, r)
  12. // query params
  13. query := r.GetQueryParams()
  14. assert.Equal(t, 0, len(query))
  15. r.addQueryParam("key", "value")
  16. assert.Equal(t, 1, len(query))
  17. assert.Equal(t, "value", query["key"])
  18. // form params
  19. form := r.GetFormParams()
  20. assert.Equal(t, 0, len(form))
  21. r.addFormParam("key", "value")
  22. assert.Equal(t, 1, len(form))
  23. assert.Equal(t, "value", form["key"])
  24. // getter/setter for stringtosign
  25. assert.Equal(t, "", r.GetStringToSign())
  26. r.SetStringToSign("s2s")
  27. assert.Equal(t, "s2s", r.GetStringToSign())
  28. // content type
  29. _, contains := r.GetContentType()
  30. assert.False(t, contains)
  31. r.SetContentType("application/json")
  32. ct, contains := r.GetContentType()
  33. assert.Equal(t, "application/json", ct)
  34. assert.True(t, contains)
  35. // default 3 headers & content-type
  36. headers := r.GetHeaders()
  37. assert.Equal(t, 4, len(headers))
  38. r.addHeaderParam("x-key", "x-key-value")
  39. assert.Equal(t, 5, len(headers))
  40. assert.Equal(t, "x-key-value", headers["x-key"])
  41. // GetVersion
  42. assert.Equal(t, "", r.GetVersion())
  43. // GetActionName
  44. assert.Equal(t, "", r.GetActionName())
  45. // GetMethod
  46. assert.Equal(t, "GET", r.GetMethod())
  47. r.Method = "POST"
  48. assert.Equal(t, "POST", r.GetMethod())
  49. // Domain
  50. assert.Equal(t, "", r.GetDomain())
  51. r.SetDomain("ecs.aliyuncs.com")
  52. assert.Equal(t, "ecs.aliyuncs.com", r.GetDomain())
  53. // Region
  54. assert.Equal(t, "", r.GetRegionId())
  55. r.RegionId = "cn-hangzhou"
  56. assert.Equal(t, "cn-hangzhou", r.GetRegionId())
  57. // AcceptFormat
  58. assert.Equal(t, "JSON", r.GetAcceptFormat())
  59. r.AcceptFormat = "XML"
  60. assert.Equal(t, "XML", r.GetAcceptFormat())
  61. // GetLocationServiceCode
  62. assert.Equal(t, "", r.GetLocationServiceCode())
  63. // GetLocationEndpointType
  64. assert.Equal(t, "", r.GetLocationEndpointType())
  65. // GetProduct
  66. assert.Equal(t, "", r.GetProduct())
  67. // GetScheme
  68. assert.Equal(t, "", r.GetScheme())
  69. r.SetScheme("HTTPS")
  70. assert.Equal(t, "HTTPS", r.GetScheme())
  71. // GetReadTimeout
  72. assert.Equal(t, 0*time.Second, r.GetReadTimeout())
  73. r.SetReadTimeout(5 * time.Second)
  74. assert.Equal(t, 5*time.Second, r.GetReadTimeout())
  75. // GetConnectTimeout
  76. assert.Equal(t, 0*time.Second, r.GetConnectTimeout())
  77. r.SetConnectTimeout(5 * time.Second)
  78. assert.Equal(t, 5*time.Second, r.GetConnectTimeout())
  79. // GetPort
  80. assert.Equal(t, "", r.GetPort())
  81. // GetUserAgent
  82. r.AppendUserAgent("cli", "1.01")
  83. assert.Equal(t, "1.01", r.GetUserAgent()["cli"])
  84. // GetUserAgent
  85. r.AppendUserAgent("cli", "2.02")
  86. assert.Equal(t, "2.02", r.GetUserAgent()["cli"])
  87. // Content
  88. assert.Equal(t, []byte(nil), r.GetContent())
  89. r.SetContent([]byte("The Content"))
  90. assert.True(t, bytes.Equal([]byte("The Content"), r.GetContent()))
  91. }
  92. type AcsRequestTest struct {
  93. *baseRequest
  94. Ontology AcsRequest
  95. Query string `position:"Query" name:"Query"`
  96. Header string `position:"Header" name:"Header"`
  97. Path string `position:"Path" name:"Path"`
  98. Body string `position:"Body" name:"Body"`
  99. TypeAcs *[]string `position:"type" name:"type" type:"Repeated"`
  100. }
  101. func (r AcsRequestTest) BuildQueries() string {
  102. return ""
  103. }
  104. func (r AcsRequestTest) BuildUrl() string {
  105. return ""
  106. }
  107. func (r AcsRequestTest) GetBodyReader() io.Reader {
  108. return nil
  109. }
  110. func (r AcsRequestTest) GetStyle() string {
  111. return ""
  112. }
  113. func (r AcsRequestTest) addPathParam(key, value string) {
  114. return
  115. }
  116. func Test_AcsRequest_InitParams(t *testing.T) {
  117. r := &AcsRequestTest{
  118. baseRequest: defaultBaseRequest(),
  119. Query: "query value",
  120. Header: "header value",
  121. Path: "path value",
  122. Body: "body value",
  123. }
  124. tmp := []string{r.Query, r.Header}
  125. r.TypeAcs = &tmp
  126. r.addQueryParam("qkey", "qvalue")
  127. InitParams(r)
  128. queries := r.GetQueryParams()
  129. assert.Equal(t, "query value", queries["Query"])
  130. headers := r.GetHeaders()
  131. assert.Equal(t, "header value", headers["Header"])
  132. // TODO: check the body & path
  133. }