type_test.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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) TestNewLifecleRuleByDays(c *C) {
  88. _, err := NewLifecycleRuleByDays("rule1", "one", true, 30, LRTExpriration)
  89. c.Assert(err, IsNil)
  90. _, err = NewLifecycleRuleByDays("rule2", "two", true, 30, LRTAbortMultiPartUpload)
  91. c.Assert(err, IsNil)
  92. _, err = NewLifecycleRuleByDays("rule3", "three", true, 30, LRTTransition, StorageIA)
  93. c.Assert(err, IsNil)
  94. _, err = NewLifecycleRuleByDays("rule4", "four", true, 30, LRTTransition, StorageArchive)
  95. c.Assert(err, IsNil)
  96. // expiration lifecycle type, set storage class type
  97. _, err = NewLifecycleRuleByDays("rule5", "five", true, 30, LRTExpriration, StorageIA)
  98. c.Assert(err, NotNil)
  99. // abort multipart upload lifecycle type, set storage class type
  100. _, err = NewLifecycleRuleByDays("rule6", "six", true, 30, LRTAbortMultiPartUpload, StorageIA)
  101. c.Assert(err, NotNil)
  102. // transition lifecycle type, the value of storage class type is StorageStandard
  103. _, err = NewLifecycleRuleByDays("rule7", "seven", true, 30, LRTTransition, StorageStandard)
  104. c.Assert(err, NotNil)
  105. // transition lifecycle type, do not set storage class type
  106. _, err = NewLifecycleRuleByDays("rule8", "eight", true, 30, LRTTransition)
  107. c.Assert(err, NotNil)
  108. // transition lifecycle type,set two storage class type
  109. _, err = NewLifecycleRuleByDays("rule9", "nine", true, 30, LRTTransition, StorageIA, StorageArchive)
  110. c.Assert(err, NotNil)
  111. }
  112. func (s *OssTypeSuite) TestNewLifecycleRuleByCreateBeforeDate(c *C) {
  113. _, err := NewLifecycleRuleByCreateBeforeDate("rule1", "one", true, 2019, 3, 30, LRTExpriration)
  114. c.Assert(err, IsNil)
  115. _, err = NewLifecycleRuleByCreateBeforeDate("rule2", "two", true, 2019, 3, 30, LRTAbortMultiPartUpload)
  116. c.Assert(err, IsNil)
  117. _, err = NewLifecycleRuleByCreateBeforeDate("rule3", "three", true, 2019, 3, 30, LRTTransition, StorageIA)
  118. c.Assert(err, IsNil)
  119. _, err = NewLifecycleRuleByCreateBeforeDate("rule4", "four", true, 2019, 3, 30, LRTTransition, StorageArchive)
  120. c.Assert(err, IsNil)
  121. // expiration lifecycle type, set storage class type
  122. _, err = NewLifecycleRuleByCreateBeforeDate("rule5", "five", true, 2019, 3, 30, LRTExpriration, StorageIA)
  123. c.Assert(err, NotNil)
  124. // abort multipart upload lifecycle type, set storage class type
  125. _, err = NewLifecycleRuleByCreateBeforeDate("rule6", "six", true, 2019, 3, 30, LRTAbortMultiPartUpload, StorageIA)
  126. c.Assert(err, NotNil)
  127. // transition lifecycle type, the value of storage class type is StorageStandard
  128. _, err = NewLifecycleRuleByCreateBeforeDate("rule7", "seven", true, 2019, 3, 30, LRTTransition, StorageStandard)
  129. c.Assert(err, NotNil)
  130. // transition lifecycle type, do not set storage class type
  131. _, err = NewLifecycleRuleByCreateBeforeDate("rule8", "eight", true, 2019, 3, 30, LRTTransition)
  132. c.Assert(err, NotNil)
  133. // transition lifecycle type,set two storage class type
  134. _, err = NewLifecycleRuleByCreateBeforeDate("rule9", "nine", true, 2019, 3, 30, LRTTransition, StorageIA, StorageArchive)
  135. c.Assert(err, NotNil)
  136. }