type_test.go 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. package oss
  2. import (
  3. "net/url"
  4. "sort"
  5. . "gopkg.in/check.v1"
  6. )
  7. type OssTypeSuite struct{}
  8. var _ = Suite(&OssTypeSuite{})
  9. var (
  10. goStr = "go go + go <> go"
  11. chnStr = "试问闲情几许"
  12. goURLStr = url.QueryEscape(goStr)
  13. chnURLStr = url.QueryEscape(chnStr)
  14. )
  15. func (s *OssTypeSuite) TestDecodeDeleteObjectsResult(c *C) {
  16. var res DeleteObjectsResult
  17. err := decodeDeleteObjectsResult(&res)
  18. c.Assert(err, IsNil)
  19. res.DeletedObjects = []string{""}
  20. err = decodeDeleteObjectsResult(&res)
  21. c.Assert(err, IsNil)
  22. c.Assert(res.DeletedObjects[0], Equals, "")
  23. res.DeletedObjects = []string{goURLStr, chnURLStr}
  24. err = decodeDeleteObjectsResult(&res)
  25. c.Assert(err, IsNil)
  26. c.Assert(res.DeletedObjects[0], Equals, goStr)
  27. c.Assert(res.DeletedObjects[1], Equals, chnStr)
  28. }
  29. func (s *OssTypeSuite) TestDecodeListObjectsResult(c *C) {
  30. var res ListObjectsResult
  31. err := decodeListObjectsResult(&res)
  32. c.Assert(err, IsNil)
  33. res = ListObjectsResult{}
  34. err = decodeListObjectsResult(&res)
  35. c.Assert(err, IsNil)
  36. res = ListObjectsResult{Prefix: goURLStr, Marker: goURLStr,
  37. Delimiter: goURLStr, NextMarker: goURLStr,
  38. Objects: []ObjectProperties{{Key: chnURLStr}},
  39. CommonPrefixes: []string{chnURLStr}}
  40. err = decodeListObjectsResult(&res)
  41. c.Assert(err, IsNil)
  42. c.Assert(res.Prefix, Equals, goStr)
  43. c.Assert(res.Marker, Equals, goStr)
  44. c.Assert(res.Delimiter, Equals, goStr)
  45. c.Assert(res.NextMarker, Equals, goStr)
  46. c.Assert(res.Objects[0].Key, Equals, chnStr)
  47. c.Assert(res.CommonPrefixes[0], Equals, chnStr)
  48. }
  49. func (s *OssTypeSuite) TestDecodeListMultipartUploadResult(c *C) {
  50. res := ListMultipartUploadResult{}
  51. err := decodeListMultipartUploadResult(&res)
  52. c.Assert(err, IsNil)
  53. res = ListMultipartUploadResult{Prefix: goURLStr, KeyMarker: goURLStr,
  54. Delimiter: goURLStr, NextKeyMarker: goURLStr,
  55. Uploads: []UncompletedUpload{{Key: chnURLStr}}}
  56. err = decodeListMultipartUploadResult(&res)
  57. c.Assert(err, IsNil)
  58. c.Assert(res.Prefix, Equals, goStr)
  59. c.Assert(res.KeyMarker, Equals, goStr)
  60. c.Assert(res.Delimiter, Equals, goStr)
  61. c.Assert(res.NextKeyMarker, Equals, goStr)
  62. c.Assert(res.Uploads[0].Key, Equals, chnStr)
  63. }
  64. func (s *OssTypeSuite) TestSortUploadPart(c *C) {
  65. parts := []UploadPart{}
  66. sort.Sort(uploadParts(parts))
  67. c.Assert(len(parts), Equals, 0)
  68. parts = []UploadPart{
  69. {PartNumber: 5, ETag: "E5"},
  70. {PartNumber: 1, ETag: "E1"},
  71. {PartNumber: 4, ETag: "E4"},
  72. {PartNumber: 2, ETag: "E2"},
  73. {PartNumber: 3, ETag: "E3"},
  74. }
  75. sort.Sort(uploadParts(parts))
  76. c.Assert(parts[0].PartNumber, Equals, 1)
  77. c.Assert(parts[0].ETag, Equals, "E1")
  78. c.Assert(parts[1].PartNumber, Equals, 2)
  79. c.Assert(parts[1].ETag, Equals, "E2")
  80. c.Assert(parts[2].PartNumber, Equals, 3)
  81. c.Assert(parts[2].ETag, Equals, "E3")
  82. c.Assert(parts[3].PartNumber, Equals, 4)
  83. c.Assert(parts[3].ETag, Equals, "E4")
  84. c.Assert(parts[4].PartNumber, Equals, 5)
  85. c.Assert(parts[4].ETag, Equals, "E5")
  86. }
  87. func (s *OssTypeSuite) TestNewLifecleRule(c *C) {
  88. expiration := LifecycleExpiration{
  89. Days: 30,
  90. CreatedBeforeDate: "2015-11-11T00:00:00.000Z",
  91. }
  92. _, err := NewLifecycleRule("ruleID", "prefix", true, &expiration, nil)
  93. c.Assert(err, NotNil)
  94. expiration = LifecycleExpiration{
  95. Days: 0,
  96. CreatedBeforeDate: "",
  97. }
  98. _, err = NewLifecycleRule("ruleID", "prefix", true, &expiration, nil)
  99. c.Assert(err, NotNil)
  100. abortMPU := LifecycleAbortMultipartUpload{
  101. Days: 30,
  102. CreatedBeforeDate: "2015-11-11T00:00:00.000Z",
  103. }
  104. _, err = NewLifecycleRule("ruleID", "prefix", true, nil, &abortMPU)
  105. c.Assert(err, NotNil)
  106. abortMPU = LifecycleAbortMultipartUpload{
  107. Days: 0,
  108. CreatedBeforeDate: "",
  109. }
  110. _, err = NewLifecycleRule("ruleID", "prefix", true, nil, &abortMPU)
  111. c.Assert(err, NotNil)
  112. transition := LifecycleTransition{
  113. Days: 30,
  114. CreatedBeforeDate: "2015-11-11T00:00:00.000Z",
  115. StorageClass: StorageIA,
  116. }
  117. _, err = NewLifecycleRule("ruleID", "prefix", true, nil, nil, &transition)
  118. c.Assert(err, NotNil)
  119. transition = LifecycleTransition{
  120. Days: 0,
  121. CreatedBeforeDate: "",
  122. StorageClass: StorageIA,
  123. }
  124. _, err = NewLifecycleRule("ruleID", "prefix", true, nil, nil, &transition)
  125. c.Assert(err, NotNil)
  126. transition = LifecycleTransition{
  127. Days: 30,
  128. StorageClass: StorageStandard,
  129. }
  130. _, err = NewLifecycleRule("ruleID", "prefix", true, nil, nil, &transition)
  131. c.Assert(err, NotNil)
  132. transition = LifecycleTransition{
  133. CreatedBeforeDate: "2015-11-11T00:00:00.000Z",
  134. StorageClass: StorageStandard,
  135. }
  136. _, err = NewLifecycleRule("ruleID", "prefix", true, nil, nil, &transition)
  137. c.Assert(err, NotNil)
  138. transition1 := LifecycleTransition{
  139. Days: 30,
  140. StorageClass: StorageIA,
  141. }
  142. transition2 := LifecycleTransition{
  143. Days: 60,
  144. StorageClass: StorageArchive,
  145. }
  146. transition3 := LifecycleTransition{
  147. Days: 100,
  148. StorageClass: StorageArchive,
  149. }
  150. _, err = NewLifecycleRule("ruleID", "prefix", true, nil, nil, &transition1, &transition2, &transition3)
  151. c.Assert(err, NotNil)
  152. _, err = NewLifecycleRule("ruleID", "prefix", true, nil, nil)
  153. c.Assert(err, NotNil)
  154. expiration = LifecycleExpiration{
  155. Days: 30,
  156. }
  157. _, err = NewLifecycleRule("ruleID", "prefix", true, &expiration, nil)
  158. c.Assert(err, IsNil)
  159. expiration = LifecycleExpiration{
  160. CreatedBeforeDate: "2015-11-11T00:00:00.000Z",
  161. }
  162. _, err = NewLifecycleRule("ruleID", "prefix", true, &expiration, nil)
  163. c.Assert(err, IsNil)
  164. abortMPU = LifecycleAbortMultipartUpload{
  165. Days: 30,
  166. }
  167. _, err = NewLifecycleRule("ruleID", "prefix", true, nil, &abortMPU)
  168. c.Assert(err, IsNil)
  169. abortMPU = LifecycleAbortMultipartUpload{
  170. CreatedBeforeDate: "2015-11-11T00:00:00.000Z",
  171. }
  172. _, err = NewLifecycleRule("ruleID", "prefix", true, nil, &abortMPU)
  173. c.Assert(err, IsNil)
  174. expiration = LifecycleExpiration{
  175. Days: 30,
  176. }
  177. abortMPU = LifecycleAbortMultipartUpload{
  178. Days: 30,
  179. }
  180. _, err = NewLifecycleRule("ruleID", "prefix", true, &expiration, &abortMPU)
  181. c.Assert(err, IsNil)
  182. expiration = LifecycleExpiration{
  183. CreatedBeforeDate: "2015-11-11T00:00:00.000Z",
  184. }
  185. abortMPU = LifecycleAbortMultipartUpload{
  186. Days: 30,
  187. }
  188. transition = LifecycleTransition{
  189. Days: 30,
  190. StorageClass: StorageIA,
  191. }
  192. _, err = NewLifecycleRule("ruleID", "prefix", true, &expiration, &abortMPU)
  193. c.Assert(err, IsNil)
  194. expiration = LifecycleExpiration{
  195. CreatedBeforeDate: "2015-11-11T00:00:00.000Z",
  196. }
  197. abortMPU = LifecycleAbortMultipartUpload{
  198. Days: 30,
  199. }
  200. transition1 = LifecycleTransition{
  201. Days: 30,
  202. StorageClass: StorageIA,
  203. }
  204. transition2 = LifecycleTransition{
  205. Days: 60,
  206. StorageClass: StorageArchive,
  207. }
  208. _, err = NewLifecycleRule("ruleID", "prefix", true, &expiration, &abortMPU, &transition1, &transition2)
  209. c.Assert(err, IsNil)
  210. }