client_test.go 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193
  1. // client test
  2. // use gocheck, install gocheck to execute "go get gopkg.in/check.v1",
  3. // see https://labix.org/gocheck
  4. package oss
  5. import (
  6. "io/ioutil"
  7. "log"
  8. "math/rand"
  9. "net/http"
  10. "os"
  11. "runtime"
  12. "strings"
  13. "testing"
  14. "time"
  15. . "gopkg.in/check.v1"
  16. )
  17. // Test hooks up gocheck into the "go test" runner.
  18. func Test(t *testing.T) {
  19. TestingT(t)
  20. }
  21. type OssClientSuite struct{}
  22. var _ = Suite(&OssClientSuite{})
  23. var (
  24. // Endpoint/ID/Key
  25. endpoint = os.Getenv("OSS_TEST_ENDPOINT")
  26. accessID = os.Getenv("OSS_TEST_ACCESS_KEY_ID")
  27. accessKey = os.Getenv("OSS_TEST_ACCESS_KEY_SECRET")
  28. // Proxy
  29. proxyHost = os.Getenv("OSS_TEST_PROXY_HOST")
  30. proxyUser = os.Getenv("OSS_TEST_PROXY_USER")
  31. proxyPasswd = os.Getenv("OSS_TEST_PROXY_PASSWORD")
  32. // STS
  33. stsaccessID = os.Getenv("OSS_TEST_STS_ID")
  34. stsaccessKey = os.Getenv("OSS_TEST_STS_KEY")
  35. stsARN = os.Getenv("OSS_TEST_STS_ARN")
  36. )
  37. var (
  38. // prefix of bucket name for bucket ops test
  39. bucketNamePrefix = "go-sdk-test-bucket-"
  40. // bucket name for object ops test
  41. bucketName = bucketNamePrefix + randLowStr(6)
  42. archiveBucketName = bucketNamePrefix + "arch-" + randLowStr(6)
  43. // object name for object ops test
  44. objectNamePrefix = "go-sdk-test-object-"
  45. // sts region is one and only hangzhou
  46. stsRegion = "cn-hangzhou"
  47. )
  48. var (
  49. logPath = "go_sdk_test_" + time.Now().Format("20060102_150405") + ".log"
  50. testLogFile, _ = os.OpenFile(logPath, os.O_RDWR|os.O_CREATE, 0664)
  51. testLogger = log.New(testLogFile, "", log.Ldate|log.Ltime|log.Lshortfile)
  52. letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
  53. timeoutInOperation = 3 * time.Second
  54. )
  55. func randStr(n int) string {
  56. b := make([]rune, n)
  57. randMarker := rand.New(rand.NewSource(time.Now().UnixNano()))
  58. for i := range b {
  59. b[i] = letters[randMarker.Intn(len(letters))]
  60. }
  61. return string(b)
  62. }
  63. func createFile(fileName, content string, c *C) {
  64. fout, err := os.Create(fileName)
  65. defer fout.Close()
  66. c.Assert(err, IsNil)
  67. _, err = fout.WriteString(content)
  68. c.Assert(err, IsNil)
  69. }
  70. func randLowStr(n int) string {
  71. return strings.ToLower(randStr(n))
  72. }
  73. func forceDeleteBucket(client *Client, bucketName string, c *C) {
  74. bucket, err := client.Bucket(bucketName)
  75. c.Assert(err, IsNil)
  76. // Delete Object
  77. marker := Marker("")
  78. for {
  79. lor, err := bucket.ListObjects(marker)
  80. c.Assert(err, IsNil)
  81. for _, object := range lor.Objects {
  82. err = bucket.DeleteObject(object.Key)
  83. c.Assert(err, IsNil)
  84. }
  85. marker = Marker(lor.NextMarker)
  86. if !lor.IsTruncated {
  87. break
  88. }
  89. }
  90. // Delete Object Versions and DeleteMarks
  91. keyMarker := KeyMarker("")
  92. versionIdMarker := VersionIdMarker("")
  93. options := []Option{keyMarker, versionIdMarker}
  94. for {
  95. lor, err := bucket.ListObjectVersions(options...)
  96. if err != nil {
  97. break
  98. }
  99. for _, object := range lor.ObjectDeleteMarkers {
  100. err = bucket.DeleteObject(object.Key, VersionId(object.VersionId))
  101. c.Assert(err, IsNil)
  102. }
  103. for _, object := range lor.ObjectVersions {
  104. err = bucket.DeleteObject(object.Key, VersionId(object.VersionId))
  105. c.Assert(err, IsNil)
  106. }
  107. keyMarker = KeyMarker(lor.NextKeyMarker)
  108. versionIdMarker := VersionIdMarker(lor.NextVersionIdMarker)
  109. options = []Option{keyMarker, versionIdMarker}
  110. if !lor.IsTruncated {
  111. break
  112. }
  113. }
  114. // Delete Part
  115. keyMarker = KeyMarker("")
  116. uploadIDMarker := UploadIDMarker("")
  117. for {
  118. lmur, err := bucket.ListMultipartUploads(keyMarker, uploadIDMarker)
  119. c.Assert(err, IsNil)
  120. for _, upload := range lmur.Uploads {
  121. var imur = InitiateMultipartUploadResult{Bucket: bucketName,
  122. Key: upload.Key, UploadID: upload.UploadID}
  123. err = bucket.AbortMultipartUpload(imur)
  124. c.Assert(err, IsNil)
  125. }
  126. keyMarker = KeyMarker(lmur.NextKeyMarker)
  127. uploadIDMarker = UploadIDMarker(lmur.NextUploadIDMarker)
  128. if !lmur.IsTruncated {
  129. break
  130. }
  131. }
  132. // Delete Bucket
  133. err = client.DeleteBucket(bucketName)
  134. c.Assert(err, IsNil)
  135. }
  136. // SetUpSuite runs once when the suite starts running
  137. func (s *OssClientSuite) SetUpSuite(c *C) {
  138. client, err := New(endpoint, accessID, accessKey)
  139. c.Assert(err, IsNil)
  140. lbr, err := client.ListBuckets(Prefix(bucketNamePrefix), MaxKeys(1000))
  141. c.Assert(err, IsNil)
  142. for _, bucket := range lbr.Buckets {
  143. forceDeleteBucket(client, bucket.Name, c)
  144. }
  145. testLogger.Println("test client started")
  146. }
  147. // TearDownSuite runs before each test or benchmark starts running
  148. func (s *OssClientSuite) TearDownSuite(c *C) {
  149. client, err := New(endpoint, accessID, accessKey)
  150. c.Assert(err, IsNil)
  151. lbr, err := client.ListBuckets(Prefix(bucketNamePrefix), MaxKeys(1000))
  152. c.Assert(err, IsNil)
  153. for _, bucket := range lbr.Buckets {
  154. s.deleteBucket(client, bucket.Name, c)
  155. }
  156. testLogger.Println("test client completed")
  157. }
  158. func (s *OssClientSuite) deleteBucket(client *Client, bucketName string, c *C) {
  159. forceDeleteBucket(client, bucketName, c)
  160. }
  161. // SetUpTest runs after each test or benchmark runs
  162. func (s *OssClientSuite) SetUpTest(c *C) {
  163. }
  164. // TearDownTest runs once after all tests or benchmarks have finished running
  165. func (s *OssClientSuite) TearDownTest(c *C) {
  166. }
  167. // TestCreateBucket
  168. func (s *OssClientSuite) TestCreateBucket(c *C) {
  169. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  170. client, err := New(endpoint, accessID, accessKey)
  171. c.Assert(err, IsNil)
  172. // Create
  173. client.DeleteBucket(bucketNameTest)
  174. err = client.CreateBucket(bucketNameTest)
  175. c.Assert(err, IsNil)
  176. //sleep 3 seconds after create bucket
  177. time.Sleep(timeoutInOperation)
  178. // verify bucket is exist
  179. found, err := client.IsBucketExist(bucketNameTest)
  180. c.Assert(err, IsNil)
  181. c.Assert(found, Equals, true)
  182. res, err := client.GetBucketACL(bucketNameTest)
  183. c.Assert(err, IsNil)
  184. c.Assert(res.ACL, Equals, string(ACLPrivate))
  185. err = client.DeleteBucket(bucketNameTest)
  186. c.Assert(err, IsNil)
  187. time.Sleep(timeoutInOperation)
  188. // CreateBucket creates with ACLPublicRead
  189. err = client.CreateBucket(bucketNameTest, ACL(ACLPublicRead))
  190. c.Assert(err, IsNil)
  191. time.Sleep(timeoutInOperation)
  192. res, err = client.GetBucketACL(bucketNameTest)
  193. c.Assert(err, IsNil)
  194. c.Assert(res.ACL, Equals, string(ACLPublicRead))
  195. err = client.DeleteBucket(bucketNameTest)
  196. c.Assert(err, IsNil)
  197. time.Sleep(timeoutInOperation)
  198. // ACLPublicReadWrite
  199. err = client.CreateBucket(bucketNameTest, ACL(ACLPublicReadWrite))
  200. c.Assert(err, IsNil)
  201. time.Sleep(timeoutInOperation)
  202. res, err = client.GetBucketACL(bucketNameTest)
  203. c.Assert(err, IsNil)
  204. c.Assert(res.ACL, Equals, string(ACLPublicReadWrite))
  205. err = client.DeleteBucket(bucketNameTest)
  206. c.Assert(err, IsNil)
  207. time.Sleep(timeoutInOperation)
  208. // ACLPrivate
  209. err = client.CreateBucket(bucketNameTest, ACL(ACLPrivate))
  210. c.Assert(err, IsNil)
  211. time.Sleep(timeoutInOperation)
  212. res, err = client.GetBucketACL(bucketNameTest)
  213. c.Assert(err, IsNil)
  214. c.Assert(res.ACL, Equals, string(ACLPrivate))
  215. // Delete
  216. err = client.DeleteBucket(bucketNameTest)
  217. c.Assert(err, IsNil)
  218. // Create bucket with configuration and test GetBucketInfo
  219. for _, storage := range []StorageClassType{StorageStandard, StorageIA, StorageArchive} {
  220. bucketNameTest := bucketNamePrefix + randLowStr(6)
  221. err = client.CreateBucket(bucketNameTest, StorageClass(storage), ACL(ACLPublicRead))
  222. c.Assert(err, IsNil)
  223. time.Sleep(timeoutInOperation)
  224. res, err := client.GetBucketInfo(bucketNameTest)
  225. c.Assert(err, IsNil)
  226. c.Assert(res.BucketInfo.Name, Equals, bucketNameTest)
  227. c.Assert(res.BucketInfo.StorageClass, Equals, string(storage))
  228. c.Assert(res.BucketInfo.ACL, Equals, string(ACLPublicRead))
  229. // Delete
  230. err = client.DeleteBucket(bucketNameTest)
  231. c.Assert(err, IsNil)
  232. }
  233. // Error put bucket with configuration
  234. err = client.CreateBucket("ERRORBUCKETNAME", StorageClass(StorageArchive))
  235. c.Assert(err, NotNil)
  236. // Create bucket with configuration and test ListBuckets
  237. for _, storage := range []StorageClassType{StorageStandard, StorageIA, StorageArchive} {
  238. bucketNameTest := bucketNamePrefix + randLowStr(6)
  239. err = client.CreateBucket(bucketNameTest, StorageClass(storage))
  240. c.Assert(err, IsNil)
  241. time.Sleep(timeoutInOperation)
  242. res, err := client.GetBucketInfo(bucketNameTest)
  243. c.Assert(err, IsNil)
  244. c.Assert(res.BucketInfo.Name, Equals, bucketNameTest)
  245. c.Assert(res.BucketInfo.StorageClass, Equals, string(storage))
  246. // Delete
  247. err = client.DeleteBucket(bucketNameTest)
  248. c.Assert(err, IsNil)
  249. }
  250. }
  251. // TestCreateBucketNegative
  252. func (s *OssClientSuite) TestCreateBucketNegative(c *C) {
  253. client, err := New(endpoint, accessID, accessKey)
  254. c.Assert(err, IsNil)
  255. // Bucket name invalid
  256. err = client.CreateBucket("xx")
  257. c.Assert(err, NotNil)
  258. err = client.CreateBucket("XXXX")
  259. c.Assert(err, NotNil)
  260. testLogger.Println(err)
  261. err = client.CreateBucket("_bucket")
  262. c.Assert(err, NotNil)
  263. testLogger.Println(err)
  264. // ACL invalid
  265. err = client.CreateBucket(bucketNamePrefix+randLowStr(6), ACL("InvaldAcl"))
  266. c.Assert(err, NotNil)
  267. testLogger.Println(err)
  268. }
  269. // TestDeleteBucket
  270. func (s *OssClientSuite) TestDeleteBucket(c *C) {
  271. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  272. client, err := New(endpoint, accessID, accessKey)
  273. c.Assert(err, IsNil)
  274. // Create
  275. err = client.CreateBucket(bucketNameTest)
  276. c.Assert(err, IsNil)
  277. time.Sleep(timeoutInOperation)
  278. // Check
  279. found, err := client.IsBucketExist(bucketNameTest)
  280. c.Assert(err, IsNil)
  281. c.Assert(found, Equals, true)
  282. // Delete
  283. err = client.DeleteBucket(bucketNameTest)
  284. c.Assert(err, IsNil)
  285. time.Sleep(timeoutInOperation)
  286. // Check
  287. found, err = client.IsBucketExist(bucketNameTest)
  288. c.Assert(err, IsNil)
  289. c.Assert(found, Equals, false)
  290. err = client.DeleteBucket(bucketNameTest)
  291. c.Assert(err, NotNil)
  292. }
  293. // TestDeleteBucketNegative
  294. func (s *OssClientSuite) TestDeleteBucketNegative(c *C) {
  295. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  296. client, err := New(endpoint, accessID, accessKey)
  297. c.Assert(err, IsNil)
  298. // Bucket name invalid
  299. err = client.DeleteBucket("xx")
  300. c.Assert(err, NotNil)
  301. err = client.DeleteBucket("XXXX")
  302. c.Assert(err, NotNil)
  303. err = client.DeleteBucket("_bucket")
  304. c.Assert(err, NotNil)
  305. // Delete no exist bucket
  306. err = client.DeleteBucket("notexist")
  307. c.Assert(err, NotNil)
  308. // No permission to delete, this ak/sk for js sdk
  309. err = client.CreateBucket(bucketNameTest)
  310. c.Assert(err, IsNil)
  311. accessID := "<accessKeyId>"
  312. accessKey := "<accessKeySecret>"
  313. clientOtherUser, err := New(endpoint, accessID, accessKey)
  314. c.Assert(err, IsNil)
  315. err = clientOtherUser.DeleteBucket(bucketNameTest)
  316. c.Assert(err, NotNil)
  317. err = client.DeleteBucket(bucketNameTest)
  318. c.Assert(err, IsNil)
  319. }
  320. // TestListBucket
  321. func (s *OssClientSuite) TestListBucket(c *C) {
  322. var prefix = bucketNamePrefix + randLowStr(6)
  323. var bucketNameLbOne = prefix + "tlb1"
  324. var bucketNameLbTwo = prefix + "tlb2"
  325. var bucketNameLbThree = prefix + "tlb3"
  326. client, err := New(endpoint, accessID, accessKey)
  327. c.Assert(err, IsNil)
  328. // CreateBucket
  329. err = client.CreateBucket(bucketNameLbOne)
  330. c.Assert(err, IsNil)
  331. err = client.CreateBucket(bucketNameLbTwo)
  332. c.Assert(err, IsNil)
  333. err = client.CreateBucket(bucketNameLbThree)
  334. c.Assert(err, IsNil)
  335. // ListBuckets, specified prefix
  336. var respHeader http.Header
  337. lbr, err := client.ListBuckets(Prefix(prefix), MaxKeys(2),GetResponseHeader(&respHeader))
  338. c.Assert(GetRequestId(respHeader) != "", Equals, true)
  339. c.Assert(err, IsNil)
  340. c.Assert(len(lbr.Buckets), Equals, 2)
  341. // ListBuckets, specified max keys
  342. lbr, err = client.ListBuckets(MaxKeys(2))
  343. c.Assert(err, IsNil)
  344. c.Assert(len(lbr.Buckets), Equals, 2)
  345. // ListBuckets, specified max keys
  346. lbr, err = client.ListBuckets(Marker(bucketNameLbOne), MaxKeys(1))
  347. c.Assert(err, IsNil)
  348. c.Assert(len(lbr.Buckets), Equals, 1)
  349. // ListBuckets, specified max keys
  350. lbr, err = client.ListBuckets(Marker(bucketNameLbOne))
  351. c.Assert(err, IsNil)
  352. c.Assert(len(lbr.Buckets) >= 2, Equals, true)
  353. // DeleteBucket
  354. err = client.DeleteBucket(bucketNameLbOne)
  355. c.Assert(err, IsNil)
  356. err = client.DeleteBucket(bucketNameLbTwo)
  357. c.Assert(err, IsNil)
  358. err = client.DeleteBucket(bucketNameLbThree)
  359. c.Assert(err, IsNil)
  360. }
  361. // TestListBucket
  362. func (s *OssClientSuite) TestIsBucketExist(c *C) {
  363. var prefix = bucketNamePrefix + randLowStr(6)
  364. var bucketNameLbOne = prefix + "tibe1"
  365. var bucketNameLbTwo = prefix + "tibe11"
  366. var bucketNameLbThree = prefix + "tibe111"
  367. client, err := New(endpoint, accessID, accessKey)
  368. c.Assert(err, IsNil)
  369. // CreateBucket
  370. err = client.CreateBucket(bucketNameLbOne)
  371. c.Assert(err, IsNil)
  372. err = client.CreateBucket(bucketNameLbTwo)
  373. c.Assert(err, IsNil)
  374. err = client.CreateBucket(bucketNameLbThree)
  375. c.Assert(err, IsNil)
  376. // Exist
  377. exist, err := client.IsBucketExist(bucketNameLbTwo)
  378. c.Assert(err, IsNil)
  379. c.Assert(exist, Equals, true)
  380. exist, err = client.IsBucketExist(bucketNameLbThree)
  381. c.Assert(err, IsNil)
  382. c.Assert(exist, Equals, true)
  383. exist, err = client.IsBucketExist(bucketNameLbOne)
  384. c.Assert(err, IsNil)
  385. c.Assert(exist, Equals, true)
  386. // Not exist
  387. exist, err = client.IsBucketExist(prefix + "tibe")
  388. c.Assert(err, IsNil)
  389. c.Assert(exist, Equals, false)
  390. exist, err = client.IsBucketExist(prefix + "tibe1111")
  391. c.Assert(err, IsNil)
  392. c.Assert(exist, Equals, false)
  393. // Negative
  394. exist, err = client.IsBucketExist("BucketNameInvalid")
  395. c.Assert(err, NotNil)
  396. // DeleteBucket
  397. err = client.DeleteBucket(bucketNameLbOne)
  398. c.Assert(err, IsNil)
  399. err = client.DeleteBucket(bucketNameLbTwo)
  400. c.Assert(err, IsNil)
  401. err = client.DeleteBucket(bucketNameLbThree)
  402. c.Assert(err, IsNil)
  403. }
  404. // TestSetBucketAcl
  405. func (s *OssClientSuite) TestSetBucketAcl(c *C) {
  406. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  407. client, err := New(endpoint, accessID, accessKey)
  408. c.Assert(err, IsNil)
  409. // Private
  410. err = client.CreateBucket(bucketNameTest)
  411. c.Assert(err, IsNil)
  412. res, err := client.GetBucketACL(bucketNameTest)
  413. c.Assert(err, IsNil)
  414. c.Assert(res.ACL, Equals, string(ACLPrivate))
  415. // Set ACL_PUBLIC_R
  416. err = client.SetBucketACL(bucketNameTest, ACLPublicRead)
  417. c.Assert(err, IsNil)
  418. time.Sleep(timeoutInOperation)
  419. res, err = client.GetBucketACL(bucketNameTest)
  420. c.Assert(err, IsNil)
  421. c.Assert(res.ACL, Equals, string(ACLPublicRead))
  422. // Set ACL_PUBLIC_RW
  423. err = client.SetBucketACL(bucketNameTest, ACLPublicReadWrite)
  424. c.Assert(err, IsNil)
  425. time.Sleep(timeoutInOperation)
  426. res, err = client.GetBucketACL(bucketNameTest)
  427. c.Assert(err, IsNil)
  428. c.Assert(res.ACL, Equals, string(ACLPublicReadWrite))
  429. // Set ACL_PUBLIC_RW
  430. err = client.SetBucketACL(bucketNameTest, ACLPrivate)
  431. c.Assert(err, IsNil)
  432. time.Sleep(timeoutInOperation)
  433. res, err = client.GetBucketACL(bucketNameTest)
  434. c.Assert(err, IsNil)
  435. c.Assert(res.ACL, Equals, string(ACLPrivate))
  436. err = client.DeleteBucket(bucketNameTest)
  437. c.Assert(err, IsNil)
  438. }
  439. // TestSetBucketAclNegative
  440. func (s *OssClientSuite) TestBucketAclNegative(c *C) {
  441. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  442. client, err := New(endpoint, accessID, accessKey)
  443. c.Assert(err, IsNil)
  444. err = client.CreateBucket(bucketNameTest)
  445. c.Assert(err, IsNil)
  446. err = client.SetBucketACL(bucketNameTest, "InvalidACL")
  447. c.Assert(err, NotNil)
  448. testLogger.Println(err)
  449. err = client.DeleteBucket(bucketNameTest)
  450. c.Assert(err, IsNil)
  451. }
  452. // TestGetBucketAcl
  453. func (s *OssClientSuite) TestGetBucketAcl(c *C) {
  454. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  455. client, err := New(endpoint, accessID, accessKey)
  456. c.Assert(err, IsNil)
  457. // Private
  458. err = client.CreateBucket(bucketNameTest)
  459. c.Assert(err, IsNil)
  460. time.Sleep(timeoutInOperation)
  461. res, err := client.GetBucketACL(bucketNameTest)
  462. c.Assert(err, IsNil)
  463. c.Assert(res.ACL, Equals, string(ACLPrivate))
  464. err = client.DeleteBucket(bucketNameTest)
  465. c.Assert(err, IsNil)
  466. time.Sleep(timeoutInOperation)
  467. // PublicRead
  468. err = client.CreateBucket(bucketNameTest, ACL(ACLPublicRead))
  469. c.Assert(err, IsNil)
  470. time.Sleep(timeoutInOperation)
  471. res, err = client.GetBucketACL(bucketNameTest)
  472. c.Assert(err, IsNil)
  473. c.Assert(res.ACL, Equals, string(ACLPublicRead))
  474. err = client.DeleteBucket(bucketNameTest)
  475. c.Assert(err, IsNil)
  476. time.Sleep(timeoutInOperation)
  477. // PublicReadWrite
  478. err = client.CreateBucket(bucketNameTest, ACL(ACLPublicReadWrite))
  479. c.Assert(err, IsNil)
  480. time.Sleep(timeoutInOperation)
  481. res, err = client.GetBucketACL(bucketNameTest)
  482. c.Assert(err, IsNil)
  483. c.Assert(res.ACL, Equals, string(ACLPublicReadWrite))
  484. err = client.DeleteBucket(bucketNameTest)
  485. c.Assert(err, IsNil)
  486. }
  487. // TestGetBucketAcl
  488. func (s *OssClientSuite) TestGetBucketLocation(c *C) {
  489. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  490. client, err := New(endpoint, accessID, accessKey)
  491. c.Assert(err, IsNil)
  492. // Private
  493. err = client.CreateBucket(bucketNameTest)
  494. c.Assert(err, IsNil)
  495. loc, err := client.GetBucketLocation(bucketNameTest)
  496. c.Assert(strings.HasPrefix(loc, "oss-"), Equals, true)
  497. err = client.DeleteBucket(bucketNameTest)
  498. c.Assert(err, IsNil)
  499. }
  500. // TestGetBucketLocationNegative
  501. func (s *OssClientSuite) TestGetBucketLocationNegative(c *C) {
  502. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  503. client, err := New(endpoint, accessID, accessKey)
  504. c.Assert(err, IsNil)
  505. // Not exist
  506. _, err = client.GetBucketLocation(bucketNameTest)
  507. c.Assert(err, NotNil)
  508. // Not exist
  509. _, err = client.GetBucketLocation("InvalidBucketName_")
  510. c.Assert(err, NotNil)
  511. }
  512. // TestSetBucketLifecycle
  513. func (s *OssClientSuite) TestSetBucketLifecycle(c *C) {
  514. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  515. var rule1 = BuildLifecycleRuleByDate("rule1", "one", true, 2015, 11, 11)
  516. var rule2 = BuildLifecycleRuleByDays("rule2", "two", true, 3)
  517. client, err := New(endpoint, accessID, accessKey)
  518. c.Assert(err, IsNil)
  519. err = client.CreateBucket(bucketNameTest)
  520. c.Assert(err, IsNil)
  521. // Set single rule
  522. var rules = []LifecycleRule{rule1}
  523. err = client.SetBucketLifecycle(bucketNameTest, rules)
  524. c.Assert(err, IsNil)
  525. // Double set rule
  526. err = client.SetBucketLifecycle(bucketNameTest, rules)
  527. c.Assert(err, IsNil)
  528. res, err := client.GetBucketLifecycle(bucketNameTest)
  529. c.Assert(err, IsNil)
  530. c.Assert(len(res.Rules), Equals, 1)
  531. c.Assert(res.Rules[0].ID, Equals, "rule1")
  532. err = client.DeleteBucketLifecycle(bucketNameTest)
  533. c.Assert(err, IsNil)
  534. // Set two rules
  535. rules = []LifecycleRule{rule1, rule2}
  536. err = client.SetBucketLifecycle(bucketNameTest, rules)
  537. c.Assert(err, IsNil)
  538. // Eliminate effect of cache
  539. time.Sleep(timeoutInOperation)
  540. res, err = client.GetBucketLifecycle(bucketNameTest)
  541. c.Assert(err, IsNil)
  542. c.Assert(len(res.Rules), Equals, 2)
  543. c.Assert(res.Rules[0].ID, Equals, "rule1")
  544. c.Assert(res.Rules[1].ID, Equals, "rule2")
  545. err = client.DeleteBucket(bucketNameTest)
  546. c.Assert(err, IsNil)
  547. }
  548. // TestSetBucketLifecycleNew
  549. func (s *OssClientSuite) TestSetBucketLifecycleNew(c *C) {
  550. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  551. client, err := New(endpoint, accessID, accessKey)
  552. c.Assert(err, IsNil)
  553. err = client.CreateBucket(bucketNameTest)
  554. c.Assert(err, IsNil)
  555. //invalid status of lifecyclerule
  556. expiration := LifecycleExpiration{
  557. Days: 30,
  558. }
  559. rule := LifecycleRule{
  560. ID: "rule1",
  561. Prefix: "one",
  562. Status: "Invalid",
  563. Expiration: &expiration,
  564. }
  565. rules := []LifecycleRule{rule}
  566. err = client.SetBucketLifecycle(bucketNameTest, rules)
  567. c.Assert(err, NotNil)
  568. //invalid value of CreatedBeforeDate
  569. expiration = LifecycleExpiration{
  570. CreatedBeforeDate: randStr(10),
  571. }
  572. rule = LifecycleRule{
  573. ID: "rule1",
  574. Prefix: "one",
  575. Status: "Enabled",
  576. Expiration: &expiration,
  577. }
  578. rules = []LifecycleRule{rule}
  579. err = client.SetBucketLifecycle(bucketNameTest, rules)
  580. c.Assert(err, NotNil)
  581. //invalid value of Days
  582. abortMPU := LifecycleAbortMultipartUpload{
  583. Days: -30,
  584. }
  585. rule = LifecycleRule{
  586. ID: "rule1",
  587. Prefix: "one",
  588. Status: "Enabled",
  589. AbortMultipartUpload: &abortMPU,
  590. }
  591. rules = []LifecycleRule{rule}
  592. err = client.SetBucketLifecycle(bucketNameTest, rules)
  593. c.Assert(err, NotNil)
  594. expiration = LifecycleExpiration{
  595. CreatedBeforeDate: "2015-11-11T00:00:00.000Z",
  596. }
  597. rule1 := LifecycleRule{
  598. ID: "rule1",
  599. Prefix: "one",
  600. Status: "Enabled",
  601. Expiration: &expiration,
  602. }
  603. abortMPU = LifecycleAbortMultipartUpload{
  604. Days: 30,
  605. }
  606. rule2 := LifecycleRule{
  607. ID: "rule2",
  608. Prefix: "two",
  609. Status: "Enabled",
  610. Expiration: &expiration,
  611. AbortMultipartUpload: &abortMPU,
  612. }
  613. transition1 := LifecycleTransition{
  614. Days: 3,
  615. StorageClass: StorageIA,
  616. }
  617. transition2 := LifecycleTransition{
  618. Days: 30,
  619. StorageClass: StorageArchive,
  620. }
  621. transitions := []LifecycleTransition{transition1, transition2}
  622. rule3 := LifecycleRule{
  623. ID: "rule3",
  624. Prefix: "three",
  625. Status: "Enabled",
  626. AbortMultipartUpload: &abortMPU,
  627. Transitions: transitions,
  628. }
  629. // Set single rule
  630. rules = []LifecycleRule{rule1}
  631. err = client.SetBucketLifecycle(bucketNameTest, rules)
  632. c.Assert(err, IsNil)
  633. res, err := client.GetBucketLifecycle(bucketNameTest)
  634. c.Assert(err, IsNil)
  635. c.Assert(len(res.Rules), Equals, 1)
  636. c.Assert(res.Rules[0].ID, Equals, "rule1")
  637. c.Assert(res.Rules[0].Expiration, NotNil)
  638. c.Assert(res.Rules[0].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
  639. err = client.DeleteBucketLifecycle(bucketNameTest)
  640. c.Assert(err, IsNil)
  641. // Set two rule: rule1 and rule2
  642. rules = []LifecycleRule{rule1, rule2}
  643. err = client.SetBucketLifecycle(bucketNameTest, rules)
  644. c.Assert(err, IsNil)
  645. res, err = client.GetBucketLifecycle(bucketNameTest)
  646. c.Assert(err, IsNil)
  647. c.Assert(len(res.Rules), Equals, 2)
  648. c.Assert(res.Rules[0].ID, Equals, "rule1")
  649. c.Assert(res.Rules[0].Expiration, NotNil)
  650. c.Assert(res.Rules[0].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
  651. c.Assert(res.Rules[1].ID, Equals, "rule2")
  652. c.Assert(res.Rules[1].Expiration, NotNil)
  653. c.Assert(res.Rules[1].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
  654. c.Assert(res.Rules[1].AbortMultipartUpload, NotNil)
  655. c.Assert(res.Rules[1].AbortMultipartUpload.Days, Equals, 30)
  656. err = client.DeleteBucketLifecycle(bucketNameTest)
  657. c.Assert(err, IsNil)
  658. // Set two rule: rule2 and rule3
  659. rules = []LifecycleRule{rule2, rule3}
  660. err = client.SetBucketLifecycle(bucketNameTest, rules)
  661. c.Assert(err, IsNil)
  662. res, err = client.GetBucketLifecycle(bucketNameTest)
  663. c.Assert(err, IsNil)
  664. c.Assert(len(res.Rules), Equals, 2)
  665. c.Assert(res.Rules[0].ID, Equals, "rule2")
  666. c.Assert(res.Rules[0].Expiration, NotNil)
  667. c.Assert(res.Rules[0].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
  668. c.Assert(res.Rules[0].AbortMultipartUpload, NotNil)
  669. c.Assert(res.Rules[0].AbortMultipartUpload.Days, Equals, 30)
  670. c.Assert(res.Rules[1].ID, Equals, "rule3")
  671. c.Assert(res.Rules[1].AbortMultipartUpload, NotNil)
  672. c.Assert(res.Rules[1].AbortMultipartUpload.Days, Equals, 30)
  673. c.Assert(len(res.Rules[1].Transitions), Equals, 2)
  674. c.Assert(res.Rules[1].Transitions[0].StorageClass, Equals, StorageIA)
  675. c.Assert(res.Rules[1].Transitions[0].Days, Equals, 3)
  676. c.Assert(res.Rules[1].Transitions[1].StorageClass, Equals, StorageArchive)
  677. c.Assert(res.Rules[1].Transitions[1].Days, Equals, 30)
  678. err = client.DeleteBucketLifecycle(bucketNameTest)
  679. c.Assert(err, IsNil)
  680. // Set two rule: rule1 and rule3
  681. rules = []LifecycleRule{rule1, rule3}
  682. err = client.SetBucketLifecycle(bucketNameTest, rules)
  683. c.Assert(err, IsNil)
  684. res, err = client.GetBucketLifecycle(bucketNameTest)
  685. c.Assert(err, IsNil)
  686. c.Assert(len(res.Rules), Equals, 2)
  687. c.Assert(res.Rules[0].ID, Equals, "rule1")
  688. c.Assert(res.Rules[0].Expiration, NotNil)
  689. c.Assert(res.Rules[0].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
  690. c.Assert(res.Rules[1].ID, Equals, "rule3")
  691. c.Assert(res.Rules[1].AbortMultipartUpload, NotNil)
  692. c.Assert(res.Rules[1].AbortMultipartUpload.Days, Equals, 30)
  693. c.Assert(len(res.Rules[1].Transitions), Equals, 2)
  694. c.Assert(res.Rules[1].Transitions[0].StorageClass, Equals, StorageIA)
  695. c.Assert(res.Rules[1].Transitions[0].Days, Equals, 3)
  696. c.Assert(res.Rules[1].Transitions[1].StorageClass, Equals, StorageArchive)
  697. c.Assert(res.Rules[1].Transitions[1].Days, Equals, 30)
  698. err = client.DeleteBucketLifecycle(bucketNameTest)
  699. c.Assert(err, IsNil)
  700. // Set three rules
  701. rules = []LifecycleRule{rule1, rule2, rule3}
  702. err = client.SetBucketLifecycle(bucketNameTest, rules)
  703. c.Assert(err, IsNil)
  704. res, err = client.GetBucketLifecycle(bucketNameTest)
  705. c.Assert(err, IsNil)
  706. c.Assert(len(res.Rules), Equals, 3)
  707. c.Assert(res.Rules[0].ID, Equals, "rule1")
  708. c.Assert(res.Rules[0].Expiration, NotNil)
  709. c.Assert(res.Rules[0].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
  710. c.Assert(res.Rules[1].ID, Equals, "rule2")
  711. c.Assert(res.Rules[1].Expiration, NotNil)
  712. c.Assert(res.Rules[1].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
  713. c.Assert(res.Rules[1].AbortMultipartUpload, NotNil)
  714. c.Assert(res.Rules[1].AbortMultipartUpload.Days, Equals, 30)
  715. c.Assert(res.Rules[2].ID, Equals, "rule3")
  716. c.Assert(res.Rules[2].AbortMultipartUpload, NotNil)
  717. c.Assert(res.Rules[2].AbortMultipartUpload.Days, Equals, 30)
  718. c.Assert(len(res.Rules[2].Transitions), Equals, 2)
  719. c.Assert(res.Rules[2].Transitions[0].StorageClass, Equals, StorageIA)
  720. c.Assert(res.Rules[2].Transitions[0].Days, Equals, 3)
  721. c.Assert(res.Rules[2].Transitions[1].StorageClass, Equals, StorageArchive)
  722. c.Assert(res.Rules[2].Transitions[1].Days, Equals, 30)
  723. err = client.DeleteBucket(bucketNameTest)
  724. c.Assert(err, IsNil)
  725. }
  726. // TestDeleteBucketLifecycle
  727. func (s *OssClientSuite) TestDeleteBucketLifecycle(c *C) {
  728. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  729. var rule1 = BuildLifecycleRuleByDate("rule1", "one", true, 2015, 11, 11)
  730. var rule2 = BuildLifecycleRuleByDays("rule2", "two", true, 3)
  731. var rules = []LifecycleRule{rule1, rule2}
  732. client, err := New(endpoint, accessID, accessKey)
  733. c.Assert(err, IsNil)
  734. err = client.CreateBucket(bucketNameTest)
  735. c.Assert(err, IsNil)
  736. //time.Sleep(timeoutInOperation)
  737. err = client.DeleteBucketLifecycle(bucketNameTest)
  738. c.Assert(err, IsNil)
  739. err = client.SetBucketLifecycle(bucketNameTest, rules)
  740. c.Assert(err, IsNil)
  741. //time.Sleep(timeoutInOperation)
  742. res, err := client.GetBucketLifecycle(bucketNameTest)
  743. c.Assert(err, IsNil)
  744. c.Assert(len(res.Rules), Equals, 2)
  745. // Delete
  746. err = client.DeleteBucketLifecycle(bucketNameTest)
  747. c.Assert(err, IsNil)
  748. //time.Sleep(timeoutInOperation)
  749. res, err = client.GetBucketLifecycle(bucketNameTest)
  750. c.Assert(err, NotNil)
  751. // Eliminate effect of cache
  752. //time.Sleep(timeoutInOperation)
  753. // Delete when not set
  754. err = client.DeleteBucketLifecycle(bucketNameTest)
  755. c.Assert(err, IsNil)
  756. err = client.DeleteBucket(bucketNameTest)
  757. c.Assert(err, IsNil)
  758. }
  759. // TestSetBucketLifecycleNegative
  760. func (s *OssClientSuite) TestBucketLifecycleNegative(c *C) {
  761. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  762. var rules = []LifecycleRule{}
  763. client, err := New(endpoint, accessID, accessKey)
  764. c.Assert(err, IsNil)
  765. err = client.CreateBucket(bucketNameTest)
  766. c.Assert(err, IsNil)
  767. // Set with no rule
  768. err = client.SetBucketLifecycle(bucketNameTest, rules)
  769. c.Assert(err, NotNil)
  770. err = client.DeleteBucket(bucketNameTest)
  771. c.Assert(err, IsNil)
  772. // Not exist
  773. err = client.SetBucketLifecycle(bucketNameTest, rules)
  774. c.Assert(err, NotNil)
  775. // Not exist
  776. _, err = client.GetBucketLifecycle(bucketNameTest)
  777. c.Assert(err, NotNil)
  778. // Not exist
  779. err = client.DeleteBucketLifecycle(bucketNameTest)
  780. c.Assert(err, NotNil)
  781. }
  782. // TestSetBucketReferer
  783. func (s *OssClientSuite) TestSetBucketReferer(c *C) {
  784. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  785. var referers = []string{"http://www.aliyun.com", "https://www.aliyun.com"}
  786. client, err := New(endpoint, accessID, accessKey)
  787. c.Assert(err, IsNil)
  788. err = client.CreateBucket(bucketNameTest)
  789. c.Assert(err, IsNil)
  790. time.Sleep(timeoutInOperation)
  791. res, err := client.GetBucketReferer(bucketNameTest)
  792. c.Assert(res.AllowEmptyReferer, Equals, true)
  793. c.Assert(len(res.RefererList), Equals, 0)
  794. // Set referers
  795. err = client.SetBucketReferer(bucketNameTest, referers, false)
  796. c.Assert(err, IsNil)
  797. time.Sleep(timeoutInOperation)
  798. res, err = client.GetBucketReferer(bucketNameTest)
  799. c.Assert(res.AllowEmptyReferer, Equals, false)
  800. c.Assert(len(res.RefererList), Equals, 2)
  801. c.Assert(res.RefererList[0], Equals, "http://www.aliyun.com")
  802. c.Assert(res.RefererList[1], Equals, "https://www.aliyun.com")
  803. // Reset referer, referers empty
  804. referers = []string{""}
  805. err = client.SetBucketReferer(bucketNameTest, referers, true)
  806. c.Assert(err, IsNil)
  807. referers = []string{}
  808. err = client.SetBucketReferer(bucketNameTest, referers, true)
  809. c.Assert(err, IsNil)
  810. res, err = client.GetBucketReferer(bucketNameTest)
  811. c.Assert(res.AllowEmptyReferer, Equals, true)
  812. c.Assert(len(res.RefererList), Equals, 0)
  813. err = client.DeleteBucket(bucketNameTest)
  814. c.Assert(err, IsNil)
  815. }
  816. // TestSetBucketRefererNegative
  817. func (s *OssClientSuite) TestBucketRefererNegative(c *C) {
  818. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  819. var referers = []string{""}
  820. client, err := New(endpoint, accessID, accessKey)
  821. c.Assert(err, IsNil)
  822. // Not exist
  823. _, err = client.GetBucketReferer(bucketNameTest)
  824. c.Assert(err, NotNil)
  825. testLogger.Println(err)
  826. // Not exist
  827. err = client.SetBucketReferer(bucketNameTest, referers, true)
  828. c.Assert(err, NotNil)
  829. testLogger.Println(err)
  830. }
  831. // TestSetBucketLogging
  832. func (s *OssClientSuite) TestSetBucketLogging(c *C) {
  833. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  834. var bucketNameTarget = bucketNameTest + "-target"
  835. client, err := New(endpoint, accessID, accessKey)
  836. c.Assert(err, IsNil)
  837. err = client.CreateBucket(bucketNameTest)
  838. c.Assert(err, IsNil)
  839. err = client.CreateBucket(bucketNameTarget)
  840. c.Assert(err, IsNil)
  841. time.Sleep(timeoutInOperation)
  842. // Set logging
  843. err = client.SetBucketLogging(bucketNameTest, bucketNameTarget, "prefix", true)
  844. c.Assert(err, IsNil)
  845. // Reset
  846. err = client.SetBucketLogging(bucketNameTest, bucketNameTarget, "prefix", false)
  847. c.Assert(err, IsNil)
  848. time.Sleep(timeoutInOperation)
  849. res, err := client.GetBucketLogging(bucketNameTest)
  850. c.Assert(err, IsNil)
  851. c.Assert(res.LoggingEnabled.TargetBucket, Equals, "")
  852. c.Assert(res.LoggingEnabled.TargetPrefix, Equals, "")
  853. err = client.DeleteBucketLogging(bucketNameTest)
  854. c.Assert(err, IsNil)
  855. // Set to self
  856. err = client.SetBucketLogging(bucketNameTest, bucketNameTest, "prefix", true)
  857. c.Assert(err, IsNil)
  858. err = client.DeleteBucket(bucketNameTest)
  859. c.Assert(err, IsNil)
  860. err = client.DeleteBucket(bucketNameTarget)
  861. c.Assert(err, IsNil)
  862. }
  863. // TestDeleteBucketLogging
  864. func (s *OssClientSuite) TestDeleteBucketLogging(c *C) {
  865. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  866. var bucketNameTarget = bucketNameTest + "-target"
  867. client, err := New(endpoint, accessID, accessKey)
  868. c.Assert(err, IsNil)
  869. err = client.CreateBucket(bucketNameTest)
  870. c.Assert(err, IsNil)
  871. err = client.CreateBucket(bucketNameTarget)
  872. c.Assert(err, IsNil)
  873. time.Sleep(timeoutInOperation)
  874. // Get when not set
  875. res, err := client.GetBucketLogging(bucketNameTest)
  876. c.Assert(err, IsNil)
  877. c.Assert(res.LoggingEnabled.TargetBucket, Equals, "")
  878. c.Assert(res.LoggingEnabled.TargetPrefix, Equals, "")
  879. // Set
  880. err = client.SetBucketLogging(bucketNameTest, bucketNameTarget, "prefix", true)
  881. c.Assert(err, IsNil)
  882. // Get
  883. time.Sleep(timeoutInOperation)
  884. res, err = client.GetBucketLogging(bucketNameTest)
  885. c.Assert(err, IsNil)
  886. c.Assert(res.LoggingEnabled.TargetBucket, Equals, bucketNameTarget)
  887. c.Assert(res.LoggingEnabled.TargetPrefix, Equals, "prefix")
  888. // Set
  889. err = client.SetBucketLogging(bucketNameTest, bucketNameTarget, "prefix", false)
  890. c.Assert(err, IsNil)
  891. // Get
  892. time.Sleep(timeoutInOperation)
  893. res, err = client.GetBucketLogging(bucketNameTest)
  894. c.Assert(err, IsNil)
  895. c.Assert(res.LoggingEnabled.TargetBucket, Equals, "")
  896. c.Assert(res.LoggingEnabled.TargetPrefix, Equals, "")
  897. // Delete
  898. err = client.DeleteBucketLogging(bucketNameTest)
  899. c.Assert(err, IsNil)
  900. // Get after delete
  901. time.Sleep(timeoutInOperation)
  902. res, err = client.GetBucketLogging(bucketNameTest)
  903. c.Assert(err, IsNil)
  904. c.Assert(res.LoggingEnabled.TargetBucket, Equals, "")
  905. c.Assert(res.LoggingEnabled.TargetPrefix, Equals, "")
  906. err = client.DeleteBucket(bucketNameTest)
  907. c.Assert(err, IsNil)
  908. err = client.DeleteBucket(bucketNameTarget)
  909. c.Assert(err, IsNil)
  910. }
  911. // TestSetBucketLoggingNegative
  912. func (s *OssClientSuite) TestSetBucketLoggingNegative(c *C) {
  913. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  914. var bucketNameTarget = bucketNameTest + "-target"
  915. client, err := New(endpoint, accessID, accessKey)
  916. c.Assert(err, IsNil)
  917. // Not exist
  918. _, err = client.GetBucketLogging(bucketNameTest)
  919. c.Assert(err, NotNil)
  920. // Not exist
  921. err = client.SetBucketLogging(bucketNameTest, "targetbucket", "prefix", true)
  922. c.Assert(err, NotNil)
  923. // Not exist
  924. err = client.DeleteBucketLogging(bucketNameTest)
  925. c.Assert(err, NotNil)
  926. err = client.CreateBucket(bucketNameTest)
  927. c.Assert(err, IsNil)
  928. time.Sleep(timeoutInOperation)
  929. // Target bucket not exist
  930. err = client.SetBucketLogging(bucketNameTest, bucketNameTarget, "prefix", true)
  931. c.Assert(err, NotNil)
  932. // Parameter invalid
  933. err = client.SetBucketLogging(bucketNameTest, "XXXX", "prefix", true)
  934. c.Assert(err, NotNil)
  935. err = client.SetBucketLogging(bucketNameTest, "xx", "prefix", true)
  936. c.Assert(err, NotNil)
  937. err = client.DeleteBucket(bucketNameTest)
  938. c.Assert(err, IsNil)
  939. }
  940. // TestSetBucketWebsite
  941. func (s *OssClientSuite) TestSetBucketWebsite(c *C) {
  942. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  943. var indexWebsite = "myindex.html"
  944. var errorWebsite = "myerror.html"
  945. client, err := New(endpoint, accessID, accessKey)
  946. c.Assert(err, IsNil)
  947. time.Sleep(timeoutInOperation)
  948. err = client.CreateBucket(bucketNameTest)
  949. c.Assert(err, IsNil)
  950. // Set
  951. err = client.SetBucketWebsite(bucketNameTest, indexWebsite, errorWebsite)
  952. c.Assert(err, IsNil)
  953. // Double set
  954. err = client.SetBucketWebsite(bucketNameTest, indexWebsite, errorWebsite)
  955. c.Assert(err, IsNil)
  956. res, err := client.GetBucketWebsite(bucketNameTest)
  957. c.Assert(err, IsNil)
  958. c.Assert(res.IndexDocument.Suffix, Equals, indexWebsite)
  959. c.Assert(res.ErrorDocument.Key, Equals, errorWebsite)
  960. // Reset
  961. err = client.SetBucketWebsite(bucketNameTest, "your"+indexWebsite, "your"+errorWebsite)
  962. c.Assert(err, IsNil)
  963. time.Sleep(timeoutInOperation)
  964. res, err = client.GetBucketWebsite(bucketNameTest)
  965. c.Assert(err, IsNil)
  966. c.Assert(res.IndexDocument.Suffix, Equals, "your"+indexWebsite)
  967. c.Assert(res.ErrorDocument.Key, Equals, "your"+errorWebsite)
  968. err = client.DeleteBucketWebsite(bucketNameTest)
  969. c.Assert(err, IsNil)
  970. // Set after delete
  971. err = client.SetBucketWebsite(bucketNameTest, indexWebsite, errorWebsite)
  972. c.Assert(err, IsNil)
  973. // Eliminate effect of cache
  974. time.Sleep(timeoutInOperation)
  975. res, err = client.GetBucketWebsite(bucketNameTest)
  976. c.Assert(err, IsNil)
  977. c.Assert(res.IndexDocument.Suffix, Equals, indexWebsite)
  978. c.Assert(res.ErrorDocument.Key, Equals, errorWebsite)
  979. err = client.DeleteBucket(bucketNameTest)
  980. c.Assert(err, IsNil)
  981. }
  982. // TestDeleteBucketWebsite
  983. func (s *OssClientSuite) TestDeleteBucketWebsite(c *C) {
  984. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  985. var indexWebsite = "myindex.html"
  986. var errorWebsite = "myerror.html"
  987. client, err := New(endpoint, accessID, accessKey)
  988. c.Assert(err, IsNil)
  989. err = client.CreateBucket(bucketNameTest)
  990. c.Assert(err, IsNil)
  991. time.Sleep(timeoutInOperation)
  992. // Get
  993. res, err := client.GetBucketWebsite(bucketNameTest)
  994. c.Assert(err, NotNil)
  995. // Detele without set
  996. err = client.DeleteBucketWebsite(bucketNameTest)
  997. c.Assert(err, IsNil)
  998. // Set
  999. err = client.SetBucketWebsite(bucketNameTest, indexWebsite, errorWebsite)
  1000. c.Assert(err, IsNil)
  1001. time.Sleep(timeoutInOperation)
  1002. res, err = client.GetBucketWebsite(bucketNameTest)
  1003. c.Assert(err, IsNil)
  1004. c.Assert(res.IndexDocument.Suffix, Equals, indexWebsite)
  1005. c.Assert(res.ErrorDocument.Key, Equals, errorWebsite)
  1006. // Detele
  1007. time.Sleep(timeoutInOperation)
  1008. err = client.DeleteBucketWebsite(bucketNameTest)
  1009. c.Assert(err, IsNil)
  1010. time.Sleep(timeoutInOperation)
  1011. res, err = client.GetBucketWebsite(bucketNameTest)
  1012. c.Assert(err, NotNil)
  1013. // Detele after delete
  1014. err = client.DeleteBucketWebsite(bucketNameTest)
  1015. c.Assert(err, IsNil)
  1016. err = client.DeleteBucket(bucketNameTest)
  1017. c.Assert(err, IsNil)
  1018. }
  1019. // TestSetBucketWebsiteNegative
  1020. func (s *OssClientSuite) TestSetBucketWebsiteNegative(c *C) {
  1021. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  1022. var indexWebsite = "myindex.html"
  1023. var errorWebsite = "myerror.html"
  1024. client, err := New(endpoint, accessID, accessKey)
  1025. c.Assert(err, IsNil)
  1026. err = client.DeleteBucket(bucketNameTest)
  1027. // Not exist
  1028. _, err = client.GetBucketWebsite(bucketNameTest)
  1029. c.Assert(err, NotNil)
  1030. err = client.DeleteBucketWebsite(bucketNameTest)
  1031. c.Assert(err, NotNil)
  1032. err = client.SetBucketWebsite(bucketNameTest, indexWebsite, errorWebsite)
  1033. c.Assert(err, NotNil)
  1034. err = client.CreateBucket(bucketNameTest)
  1035. c.Assert(err, IsNil)
  1036. // Set
  1037. time.Sleep(timeoutInOperation)
  1038. err = client.SetBucketWebsite(bucketNameTest, "myindex", "myerror")
  1039. c.Assert(err, IsNil)
  1040. res, err := client.GetBucketWebsite(bucketNameTest)
  1041. c.Assert(err, IsNil)
  1042. c.Assert(res.IndexDocument.Suffix, Equals, "myindex")
  1043. c.Assert(res.ErrorDocument.Key, Equals, "myerror")
  1044. // Detele
  1045. err = client.DeleteBucketWebsite(bucketNameTest)
  1046. c.Assert(err, IsNil)
  1047. time.Sleep(timeoutInOperation)
  1048. _, err = client.GetBucketWebsite(bucketNameTest)
  1049. c.Assert(err, NotNil)
  1050. // Detele after delete
  1051. err = client.DeleteBucketWebsite(bucketNameTest)
  1052. c.Assert(err, IsNil)
  1053. err = client.DeleteBucket(bucketNameTest)
  1054. c.Assert(err, IsNil)
  1055. }
  1056. // TestSetBucketWebsite
  1057. func (s *OssClientSuite) TestSetBucketCORS(c *C) {
  1058. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  1059. var rule1 = CORSRule{
  1060. AllowedOrigin: []string{"*"},
  1061. AllowedMethod: []string{"PUT", "GET", "POST"},
  1062. AllowedHeader: []string{},
  1063. ExposeHeader: []string{},
  1064. MaxAgeSeconds: 100,
  1065. }
  1066. var rule2 = CORSRule{
  1067. AllowedOrigin: []string{"http://www.a.com", "http://www.b.com"},
  1068. AllowedMethod: []string{"GET"},
  1069. AllowedHeader: []string{"Authorization"},
  1070. ExposeHeader: []string{"x-oss-test", "x-oss-test1"},
  1071. MaxAgeSeconds: 200,
  1072. }
  1073. client, err := New(endpoint, accessID, accessKey)
  1074. c.Assert(err, IsNil)
  1075. err = client.CreateBucket(bucketNameTest)
  1076. c.Assert(err, IsNil)
  1077. time.Sleep(timeoutInOperation)
  1078. // Set
  1079. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule1})
  1080. c.Assert(err, IsNil)
  1081. gbcr, err := client.GetBucketCORS(bucketNameTest)
  1082. c.Assert(err, IsNil)
  1083. c.Assert(len(gbcr.CORSRules), Equals, 1)
  1084. c.Assert(len(gbcr.CORSRules[0].AllowedOrigin), Equals, 1)
  1085. c.Assert(len(gbcr.CORSRules[0].AllowedMethod), Equals, 3)
  1086. c.Assert(len(gbcr.CORSRules[0].AllowedHeader), Equals, 0)
  1087. c.Assert(len(gbcr.CORSRules[0].ExposeHeader), Equals, 0)
  1088. c.Assert(gbcr.CORSRules[0].MaxAgeSeconds, Equals, 100)
  1089. // Double set
  1090. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule1})
  1091. c.Assert(err, IsNil)
  1092. gbcr, err = client.GetBucketCORS(bucketNameTest)
  1093. c.Assert(err, IsNil)
  1094. c.Assert(len(gbcr.CORSRules), Equals, 1)
  1095. c.Assert(len(gbcr.CORSRules[0].AllowedOrigin), Equals, 1)
  1096. c.Assert(len(gbcr.CORSRules[0].AllowedMethod), Equals, 3)
  1097. c.Assert(len(gbcr.CORSRules[0].AllowedHeader), Equals, 0)
  1098. c.Assert(len(gbcr.CORSRules[0].ExposeHeader), Equals, 0)
  1099. c.Assert(gbcr.CORSRules[0].MaxAgeSeconds, Equals, 100)
  1100. // Set rule2
  1101. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule2})
  1102. c.Assert(err, IsNil)
  1103. time.Sleep(timeoutInOperation)
  1104. gbcr, err = client.GetBucketCORS(bucketNameTest)
  1105. c.Assert(err, IsNil)
  1106. c.Assert(len(gbcr.CORSRules), Equals, 1)
  1107. c.Assert(len(gbcr.CORSRules[0].AllowedOrigin), Equals, 2)
  1108. c.Assert(len(gbcr.CORSRules[0].AllowedMethod), Equals, 1)
  1109. c.Assert(len(gbcr.CORSRules[0].AllowedHeader), Equals, 1)
  1110. c.Assert(len(gbcr.CORSRules[0].ExposeHeader), Equals, 2)
  1111. c.Assert(gbcr.CORSRules[0].MaxAgeSeconds, Equals, 200)
  1112. // Reset
  1113. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule1, rule2})
  1114. c.Assert(err, IsNil)
  1115. time.Sleep(timeoutInOperation)
  1116. gbcr, err = client.GetBucketCORS(bucketNameTest)
  1117. c.Assert(err, IsNil)
  1118. c.Assert(len(gbcr.CORSRules), Equals, 2)
  1119. // Set after delete
  1120. err = client.DeleteBucketCORS(bucketNameTest)
  1121. c.Assert(err, IsNil)
  1122. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule1, rule2})
  1123. c.Assert(err, IsNil)
  1124. time.Sleep(timeoutInOperation)
  1125. gbcr, err = client.GetBucketCORS(bucketNameTest)
  1126. c.Assert(err, IsNil)
  1127. c.Assert(len(gbcr.CORSRules), Equals, 2)
  1128. err = client.DeleteBucketCORS(bucketNameTest)
  1129. c.Assert(err, IsNil)
  1130. err = client.DeleteBucket(bucketNameTest)
  1131. c.Assert(err, IsNil)
  1132. }
  1133. // TestDeleteBucketCORS
  1134. func (s *OssClientSuite) TestDeleteBucketCORS(c *C) {
  1135. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  1136. var rule = CORSRule{
  1137. AllowedOrigin: []string{"*"},
  1138. AllowedMethod: []string{"PUT", "GET", "POST"},
  1139. AllowedHeader: []string{},
  1140. ExposeHeader: []string{},
  1141. MaxAgeSeconds: 100,
  1142. }
  1143. client, err := New(endpoint, accessID, accessKey)
  1144. c.Assert(err, IsNil)
  1145. err = client.CreateBucket(bucketNameTest)
  1146. c.Assert(err, IsNil)
  1147. time.Sleep(timeoutInOperation)
  1148. // Delete not set
  1149. err = client.DeleteBucketCORS(bucketNameTest)
  1150. c.Assert(err, IsNil)
  1151. // Set
  1152. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule})
  1153. c.Assert(err, IsNil)
  1154. time.Sleep(timeoutInOperation)
  1155. _, err = client.GetBucketCORS(bucketNameTest)
  1156. c.Assert(err, IsNil)
  1157. // Detele
  1158. err = client.DeleteBucketCORS(bucketNameTest)
  1159. c.Assert(err, IsNil)
  1160. time.Sleep(timeoutInOperation)
  1161. _, err = client.GetBucketCORS(bucketNameTest)
  1162. c.Assert(err, NotNil)
  1163. // Detele after deleting
  1164. err = client.DeleteBucketCORS(bucketNameTest)
  1165. c.Assert(err, IsNil)
  1166. err = client.DeleteBucket(bucketNameTest)
  1167. c.Assert(err, IsNil)
  1168. }
  1169. // TestSetBucketCORSNegative
  1170. func (s *OssClientSuite) TestSetBucketCORSNegative(c *C) {
  1171. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  1172. var rule = CORSRule{
  1173. AllowedOrigin: []string{"*"},
  1174. AllowedMethod: []string{"PUT", "GET", "POST"},
  1175. AllowedHeader: []string{},
  1176. ExposeHeader: []string{},
  1177. MaxAgeSeconds: 100,
  1178. }
  1179. client, err := New(endpoint, accessID, accessKey)
  1180. c.Assert(err, IsNil)
  1181. err = client.DeleteBucket(bucketNameTest)
  1182. // Not exist
  1183. _, err = client.GetBucketCORS(bucketNameTest)
  1184. c.Assert(err, NotNil)
  1185. err = client.DeleteBucketCORS(bucketNameTest)
  1186. c.Assert(err, NotNil)
  1187. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule})
  1188. c.Assert(err, NotNil)
  1189. err = client.CreateBucket(bucketNameTest)
  1190. c.Assert(err, IsNil)
  1191. time.Sleep(timeoutInOperation)
  1192. _, err = client.GetBucketCORS(bucketNameTest)
  1193. c.Assert(err, NotNil)
  1194. // Set
  1195. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule})
  1196. c.Assert(err, IsNil)
  1197. time.Sleep(timeoutInOperation)
  1198. _, err = client.GetBucketCORS(bucketNameTest)
  1199. c.Assert(err, IsNil)
  1200. // Delete
  1201. err = client.DeleteBucketCORS(bucketNameTest)
  1202. c.Assert(err, IsNil)
  1203. time.Sleep(timeoutInOperation)
  1204. _, err = client.GetBucketCORS(bucketNameTest)
  1205. c.Assert(err, NotNil)
  1206. // Delete after deleting
  1207. err = client.DeleteBucketCORS(bucketNameTest)
  1208. c.Assert(err, IsNil)
  1209. err = client.DeleteBucket(bucketNameTest)
  1210. c.Assert(err, IsNil)
  1211. }
  1212. // TestGetBucketInfo
  1213. func (s *OssClientSuite) TestGetBucketInfo(c *C) {
  1214. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  1215. client, err := New(endpoint, accessID, accessKey)
  1216. c.Assert(err, IsNil)
  1217. err = client.CreateBucket(bucketNameTest)
  1218. c.Assert(err, IsNil)
  1219. res, err := client.GetBucketInfo(bucketNameTest)
  1220. c.Assert(err, IsNil)
  1221. c.Assert(res.BucketInfo.Name, Equals, bucketNameTest)
  1222. c.Assert(strings.HasPrefix(res.BucketInfo.Location, "oss-"), Equals, true)
  1223. c.Assert(res.BucketInfo.ACL, Equals, "private")
  1224. c.Assert(strings.HasSuffix(res.BucketInfo.ExtranetEndpoint, ".com"), Equals, true)
  1225. c.Assert(strings.HasSuffix(res.BucketInfo.IntranetEndpoint, ".com"), Equals, true)
  1226. c.Assert(res.BucketInfo.CreationDate, NotNil)
  1227. err = client.DeleteBucket(bucketNameTest)
  1228. c.Assert(err, IsNil)
  1229. }
  1230. // TestGetBucketInfoNegative
  1231. func (s *OssClientSuite) TestGetBucketInfoNegative(c *C) {
  1232. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  1233. client, err := New(endpoint, accessID, accessKey)
  1234. c.Assert(err, IsNil)
  1235. // Not exist
  1236. _, err = client.GetBucketInfo(bucketNameTest)
  1237. c.Assert(err, NotNil)
  1238. // Bucket name invalid
  1239. _, err = client.GetBucketInfo("InvalidBucketName_")
  1240. c.Assert(err, NotNil)
  1241. }
  1242. // TestEndpointFormat
  1243. func (s *OssClientSuite) TestEndpointFormat(c *C) {
  1244. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  1245. // http://host
  1246. client, err := New(endpoint, accessID, accessKey)
  1247. c.Assert(err, IsNil)
  1248. err = client.CreateBucket(bucketNameTest)
  1249. c.Assert(err, IsNil)
  1250. time.Sleep(timeoutInOperation)
  1251. res, err := client.GetBucketACL(bucketNameTest)
  1252. c.Assert(err, IsNil)
  1253. c.Assert(res.ACL, Equals, string(ACLPrivate))
  1254. err = client.DeleteBucket(bucketNameTest)
  1255. c.Assert(err, IsNil)
  1256. time.Sleep(timeoutInOperation)
  1257. // http://host:port
  1258. client, err = New(endpoint+":80", accessID, accessKey)
  1259. c.Assert(err, IsNil)
  1260. err = client.CreateBucket(bucketNameTest)
  1261. c.Assert(err, IsNil)
  1262. time.Sleep(timeoutInOperation)
  1263. res, err = client.GetBucketACL(bucketNameTest)
  1264. c.Assert(err, IsNil)
  1265. c.Assert(res.ACL, Equals, string(ACLPrivate))
  1266. err = client.DeleteBucket(bucketNameTest)
  1267. c.Assert(err, IsNil)
  1268. }
  1269. // TestCname
  1270. func (s *OssClientSuite) _TestCname(c *C) {
  1271. var bucketNameTest = "<my-bucket-cname>"
  1272. client, err := New("<endpoint>", "<accessKeyId>", "<accessKeySecret>", UseCname(true))
  1273. c.Assert(err, IsNil)
  1274. err = client.CreateBucket(bucketNameTest)
  1275. c.Assert(err, IsNil)
  1276. _, err = client.ListBuckets()
  1277. c.Assert(err, NotNil)
  1278. res, err := client.GetBucketACL(bucketNameTest)
  1279. c.Assert(err, IsNil)
  1280. c.Assert(res.ACL, Equals, string(ACLPrivate))
  1281. }
  1282. // TestCnameNegative
  1283. func (s *OssClientSuite) _TestCnameNegative(c *C) {
  1284. var bucketNameTest = "<my-bucket-cname>"
  1285. client, err := New("<endpoint>", "<accessKeyId>", "<accessKeySecret>", UseCname(true))
  1286. c.Assert(err, IsNil)
  1287. err = client.CreateBucket(bucketNameTest)
  1288. c.Assert(err, NotNil)
  1289. _, err = client.ListBuckets()
  1290. c.Assert(err, NotNil)
  1291. _, err = client.GetBucketACL(bucketNameTest)
  1292. c.Assert(err, NotNil)
  1293. }
  1294. // _TestHTTPS
  1295. func (s *OssClientSuite) _TestHTTPS(c *C) {
  1296. var bucketNameTest = "<my-bucket-https>"
  1297. client, err := New("<endpoint>", "<accessKeyId>", "<accessKeySecret>")
  1298. c.Assert(err, IsNil)
  1299. err = client.CreateBucket(bucketNameTest)
  1300. c.Assert(err, IsNil)
  1301. res, err := client.GetBucketACL(bucketNameTest)
  1302. c.Assert(err, IsNil)
  1303. c.Assert(res.ACL, Equals, string(ACLPrivate))
  1304. err = client.DeleteBucket(bucketNameTest)
  1305. c.Assert(err, IsNil)
  1306. }
  1307. // TestClientOption
  1308. func (s *OssClientSuite) TestClientOption(c *C) {
  1309. var bucketNameTest = bucketNamePrefix + randLowStr(6)
  1310. client, err := New(endpoint, accessID, accessKey, UseCname(true),
  1311. Timeout(11, 12), SecurityToken("token"), Proxy(proxyHost))
  1312. c.Assert(err, IsNil)
  1313. // CreateBucket timeout
  1314. err = client.CreateBucket(bucketNameTest)
  1315. c.Assert(err, NotNil)
  1316. c.Assert(client.Conn.config.HTTPTimeout.ConnectTimeout, Equals, time.Second*11)
  1317. c.Assert(client.Conn.config.HTTPTimeout.ReadWriteTimeout, Equals, time.Second*12)
  1318. c.Assert(client.Conn.config.HTTPTimeout.HeaderTimeout, Equals, time.Second*12)
  1319. c.Assert(client.Conn.config.HTTPTimeout.IdleConnTimeout, Equals, time.Second*12)
  1320. c.Assert(client.Conn.config.HTTPTimeout.LongTimeout, Equals, time.Second*12*10)
  1321. c.Assert(client.Conn.config.SecurityToken, Equals, "token")
  1322. c.Assert(client.Conn.config.IsCname, Equals, true)
  1323. c.Assert(client.Conn.config.IsUseProxy, Equals, true)
  1324. c.Assert(client.Config.ProxyHost, Equals, proxyHost)
  1325. client, err = New(endpoint, accessID, accessKey, AuthProxy(proxyHost, proxyUser, proxyPasswd))
  1326. c.Assert(client.Conn.config.IsUseProxy, Equals, true)
  1327. c.Assert(client.Config.ProxyHost, Equals, proxyHost)
  1328. c.Assert(client.Conn.config.IsAuthProxy, Equals, true)
  1329. c.Assert(client.Conn.config.ProxyUser, Equals, proxyUser)
  1330. c.Assert(client.Conn.config.ProxyPassword, Equals, proxyPasswd)
  1331. client, err = New(endpoint, accessID, accessKey, UserAgent("go sdk user agent"))
  1332. c.Assert(client.Conn.config.UserAgent, Equals, "go sdk user agent")
  1333. // Check we can overide the http.Client
  1334. httpClient := new(http.Client)
  1335. client, err = New(endpoint, accessID, accessKey, HTTPClient(httpClient))
  1336. c.Assert(client.HTTPClient, Equals, httpClient)
  1337. c.Assert(client.Conn.client, Equals, httpClient)
  1338. client, err = New(endpoint, accessID, accessKey)
  1339. c.Assert(client.HTTPClient, IsNil)
  1340. }
  1341. // TestProxy
  1342. func (s *OssClientSuite) TestProxy(c *C) {
  1343. bucketNameTest := bucketNamePrefix + randLowStr(6)
  1344. objectName := "体育/奥运/首金"
  1345. objectValue := "大江东去,浪淘尽,千古风流人物。 故垒西边,人道是、三国周郎赤壁。"
  1346. client, err := New(endpoint, accessID, accessKey, AuthProxy(proxyHost, proxyUser, proxyPasswd))
  1347. // Create bucket
  1348. err = client.CreateBucket(bucketNameTest)
  1349. c.Assert(err, IsNil)
  1350. // Get bucket info
  1351. _, err = client.GetBucketInfo(bucketNameTest)
  1352. c.Assert(err, IsNil)
  1353. bucket, err := client.Bucket(bucketNameTest)
  1354. // Sign URL
  1355. str, err := bucket.SignURL(objectName, HTTPPut, 60)
  1356. c.Assert(err, IsNil)
  1357. c.Assert(strings.Contains(str, HTTPParamExpires+"="), Equals, true)
  1358. c.Assert(strings.Contains(str, HTTPParamAccessKeyID+"="), Equals, true)
  1359. c.Assert(strings.Contains(str, HTTPParamSignature+"="), Equals, true)
  1360. // Put object with URL
  1361. err = bucket.PutObjectWithURL(str, strings.NewReader(objectValue))
  1362. c.Assert(err, IsNil)
  1363. // Sign URL for get object
  1364. str, err = bucket.SignURL(objectName, HTTPGet, 60)
  1365. c.Assert(err, IsNil)
  1366. c.Assert(strings.Contains(str, HTTPParamExpires+"="), Equals, true)
  1367. c.Assert(strings.Contains(str, HTTPParamAccessKeyID+"="), Equals, true)
  1368. c.Assert(strings.Contains(str, HTTPParamSignature+"="), Equals, true)
  1369. // Get object with URL
  1370. body, err := bucket.GetObjectWithURL(str)
  1371. c.Assert(err, IsNil)
  1372. str, err = readBody(body)
  1373. c.Assert(err, IsNil)
  1374. c.Assert(str, Equals, objectValue)
  1375. // Put object
  1376. err = bucket.PutObject(objectName, strings.NewReader(objectValue))
  1377. c.Assert(err, IsNil)
  1378. // Get object
  1379. _, err = bucket.GetObject(objectName)
  1380. c.Assert(err, IsNil)
  1381. // List objects
  1382. _, err = bucket.ListObjects()
  1383. c.Assert(err, IsNil)
  1384. // Delete object
  1385. err = bucket.DeleteObject(objectName)
  1386. c.Assert(err, IsNil)
  1387. // Delete bucket
  1388. err = client.DeleteBucket(bucketNameTest)
  1389. c.Assert(err, IsNil)
  1390. }
  1391. // Private
  1392. func (s *OssClientSuite) checkBucket(buckets []BucketProperties, bucket string) bool {
  1393. for _, v := range buckets {
  1394. if v.Name == bucket {
  1395. return true
  1396. }
  1397. }
  1398. return false
  1399. }
  1400. func (s *OssClientSuite) getBucket(buckets []BucketProperties, bucket string) (bool, BucketProperties) {
  1401. for _, v := range buckets {
  1402. if v.Name == bucket {
  1403. return true, v
  1404. }
  1405. }
  1406. return false, BucketProperties{}
  1407. }
  1408. func (s *OssClientSuite) TestHttpLogNotSignUrl(c *C) {
  1409. logName := "." + string(os.PathSeparator) + "test-go-sdk-httpdebug.log" + randStr(5)
  1410. f, err := os.OpenFile(logName, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0660)
  1411. c.Assert(err, IsNil)
  1412. client, err := New(endpoint, accessID, accessKey)
  1413. client.Config.LogLevel = Debug
  1414. client.Config.Logger = log.New(f, "", log.LstdFlags)
  1415. var testBucketName = bucketNamePrefix + randLowStr(6)
  1416. // CreateBucket
  1417. err = client.CreateBucket(testBucketName)
  1418. f.Close()
  1419. // read log file,get http info
  1420. contents, err := ioutil.ReadFile(logName)
  1421. c.Assert(err, IsNil)
  1422. httpContent := string(contents)
  1423. //fmt.Println(httpContent)
  1424. c.Assert(strings.Contains(httpContent, "signStr"), Equals, true)
  1425. c.Assert(strings.Contains(httpContent, "Method:"), Equals, true)
  1426. // delete test bucket and log
  1427. os.Remove(logName)
  1428. client.DeleteBucket(testBucketName)
  1429. }
  1430. func (s *OssClientSuite) TestHttpLogSignUrl(c *C) {
  1431. logName := "." + string(os.PathSeparator) + "test-go-sdk-httpdebug-signurl.log" + randStr(5)
  1432. f, err := os.OpenFile(logName, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0660)
  1433. c.Assert(err, IsNil)
  1434. client, err := New(endpoint, accessID, accessKey)
  1435. client.Config.LogLevel = Debug
  1436. client.Config.Logger = log.New(f, "", log.LstdFlags)
  1437. var testBucketName = bucketNamePrefix + randLowStr(6)
  1438. // CreateBucket
  1439. err = client.CreateBucket(testBucketName)
  1440. f.Close()
  1441. // clear log
  1442. f, err = os.OpenFile(logName, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0660)
  1443. client.Config.Logger = log.New(f, "", log.LstdFlags)
  1444. bucket, _ := client.Bucket(testBucketName)
  1445. objectName := objectNamePrefix + randStr(8)
  1446. objectValue := randStr(20)
  1447. // Sign URL for put
  1448. str, err := bucket.SignURL(objectName, HTTPPut, 60)
  1449. c.Assert(err, IsNil)
  1450. c.Assert(strings.Contains(str, HTTPParamExpires+"="), Equals, true)
  1451. c.Assert(strings.Contains(str, HTTPParamAccessKeyID+"="), Equals, true)
  1452. c.Assert(strings.Contains(str, HTTPParamSignature+"="), Equals, true)
  1453. // Error put object with URL
  1454. err = bucket.PutObjectWithURL(str, strings.NewReader(objectValue), ContentType("image/tiff"))
  1455. f.Close()
  1456. // read log file,get http info
  1457. contents, err := ioutil.ReadFile(logName)
  1458. c.Assert(err, IsNil)
  1459. httpContent := string(contents)
  1460. //fmt.Println(httpContent)
  1461. c.Assert(strings.Contains(httpContent, "signStr"), Equals, true)
  1462. c.Assert(strings.Contains(httpContent, "Method:"), Equals, true)
  1463. // delete test bucket and log
  1464. os.Remove(logName)
  1465. client.DeleteBucket(testBucketName)
  1466. }
  1467. func (s *OssClientSuite) TestSetLimitUploadSpeed(c *C) {
  1468. client, err := New(endpoint, accessID, accessKey)
  1469. c.Assert(err, IsNil)
  1470. err = client.LimitUploadSpeed(100)
  1471. goVersion := runtime.Version()
  1472. pSlice := strings.Split(strings.ToLower(goVersion), ".")
  1473. // compare with go1.7
  1474. if len(pSlice) >= 2 {
  1475. if pSlice[0] > "go1" {
  1476. c.Assert(err, IsNil)
  1477. } else if pSlice[0] == "go1" && pSlice[1] >= "7" {
  1478. c.Assert(err, IsNil)
  1479. } else {
  1480. c.Assert(err, NotNil)
  1481. }
  1482. } else {
  1483. c.Assert(err, NotNil)
  1484. }
  1485. }
  1486. func (s *OssClientSuite) TestBucketEncyptionError(c *C) {
  1487. client, err := New(endpoint, accessID, accessKey)
  1488. c.Assert(err, IsNil)
  1489. bucketName := bucketNamePrefix + randLowStr(5)
  1490. err = client.CreateBucket(bucketName)
  1491. c.Assert(err, IsNil)
  1492. // SetBucketEncryption:AES256 ,"123"
  1493. encryptionRule := ServerEncryptionRule{}
  1494. encryptionRule.SSEDefault.SSEAlgorithm = string(AESAlgorithm)
  1495. encryptionRule.SSEDefault.KMSMasterKeyID = "123"
  1496. var responseHeader http.Header
  1497. err = client.SetBucketEncryption(bucketName, encryptionRule, GetResponseHeader(&responseHeader))
  1498. c.Assert(err, NotNil)
  1499. requestId := GetRequestId(responseHeader)
  1500. c.Assert(len(requestId) > 0, Equals, true)
  1501. // GetBucketEncryption
  1502. _, err = client.GetBucketEncryption(bucketName, GetResponseHeader(&responseHeader))
  1503. c.Assert(err, NotNil)
  1504. requestId = GetRequestId(responseHeader)
  1505. c.Assert(len(requestId) > 0, Equals, true)
  1506. // Get default bucket info
  1507. bucketResult, err := client.GetBucketInfo(bucketName)
  1508. c.Assert(err, IsNil)
  1509. c.Assert(bucketResult.BucketInfo.SseRule.SSEAlgorithm, Equals, "")
  1510. c.Assert(bucketResult.BucketInfo.SseRule.KMSMasterKeyID, Equals, "")
  1511. c.Assert(bucketResult.BucketInfo.Versioning, Equals, "")
  1512. err = client.DeleteBucket(bucketName)
  1513. c.Assert(err, IsNil)
  1514. }
  1515. func (s *OssClientSuite) TestBucketEncyptionPutAndGetAndDelete(c *C) {
  1516. client, err := New(endpoint, accessID, accessKey)
  1517. c.Assert(err, IsNil)
  1518. bucketName := bucketNamePrefix + randLowStr(5)
  1519. err = client.CreateBucket(bucketName)
  1520. c.Assert(err, IsNil)
  1521. // SetBucketEncryption:KMS ,""
  1522. encryptionRule := ServerEncryptionRule{}
  1523. encryptionRule.SSEDefault.SSEAlgorithm = string(KMSAlgorithm)
  1524. var responseHeader http.Header
  1525. err = client.SetBucketEncryption(bucketName, encryptionRule, GetResponseHeader(&responseHeader))
  1526. c.Assert(err, IsNil)
  1527. requestId := GetRequestId(responseHeader)
  1528. c.Assert(len(requestId) > 0, Equals, true)
  1529. // GetBucketEncryption
  1530. getResult, err := client.GetBucketEncryption(bucketName, GetResponseHeader(&responseHeader))
  1531. c.Assert(err, IsNil)
  1532. requestId = GetRequestId(responseHeader)
  1533. c.Assert(len(requestId) > 0, Equals, true)
  1534. // check encryption value
  1535. c.Assert(encryptionRule.SSEDefault.SSEAlgorithm, Equals, getResult.SSEDefault.SSEAlgorithm)
  1536. c.Assert(encryptionRule.SSEDefault.KMSMasterKeyID, Equals, getResult.SSEDefault.KMSMasterKeyID)
  1537. // delete bucket encyption
  1538. err = client.DeleteBucketEncryption(bucketName, GetResponseHeader(&responseHeader))
  1539. c.Assert(err, IsNil)
  1540. requestId = GetRequestId(responseHeader)
  1541. c.Assert(len(requestId) > 0, Equals, true)
  1542. // GetBucketEncryption failure
  1543. _, err = client.GetBucketEncryption(bucketName, GetResponseHeader(&responseHeader))
  1544. c.Assert(err, NotNil)
  1545. requestId = GetRequestId(responseHeader)
  1546. c.Assert(len(requestId) > 0, Equals, true)
  1547. // Get default bucket info
  1548. bucketResult, err := client.GetBucketInfo(bucketName)
  1549. c.Assert(err, IsNil)
  1550. c.Assert(bucketResult.BucketInfo.SseRule.SSEAlgorithm, Equals, "")
  1551. c.Assert(bucketResult.BucketInfo.SseRule.KMSMasterKeyID, Equals, "")
  1552. c.Assert(bucketResult.BucketInfo.Versioning, Equals, "")
  1553. err = client.DeleteBucket(bucketName)
  1554. c.Assert(err, IsNil)
  1555. }
  1556. func (s *OssClientSuite) TestBucketEncyptionPutObjectSuccess(c *C) {
  1557. client, err := New(endpoint, accessID, accessKey)
  1558. c.Assert(err, IsNil)
  1559. bucketName := bucketNamePrefix + randLowStr(5)
  1560. err = client.CreateBucket(bucketName)
  1561. c.Assert(err, IsNil)
  1562. // SetBucketEncryption:KMS ,""
  1563. encryptionRule := ServerEncryptionRule{}
  1564. encryptionRule.SSEDefault.SSEAlgorithm = string(KMSAlgorithm)
  1565. var responseHeader http.Header
  1566. err = client.SetBucketEncryption(bucketName, encryptionRule, GetResponseHeader(&responseHeader))
  1567. c.Assert(err, IsNil)
  1568. requestId := GetRequestId(responseHeader)
  1569. c.Assert(len(requestId) > 0, Equals, true)
  1570. // GetBucketEncryption
  1571. getResult, err := client.GetBucketEncryption(bucketName, GetResponseHeader(&responseHeader))
  1572. c.Assert(err, IsNil)
  1573. requestId = GetRequestId(responseHeader)
  1574. c.Assert(len(requestId) > 0, Equals, true)
  1575. // check encryption value
  1576. c.Assert(encryptionRule.SSEDefault.SSEAlgorithm, Equals, getResult.SSEDefault.SSEAlgorithm)
  1577. c.Assert(encryptionRule.SSEDefault.KMSMasterKeyID, Equals, getResult.SSEDefault.KMSMasterKeyID)
  1578. // Get default bucket info
  1579. bucketResult, err := client.GetBucketInfo(bucketName)
  1580. c.Assert(err, IsNil)
  1581. c.Assert(bucketResult.BucketInfo.SseRule.SSEAlgorithm, Equals, "KMS")
  1582. c.Assert(bucketResult.BucketInfo.SseRule.KMSMasterKeyID, Equals, "")
  1583. c.Assert(bucketResult.BucketInfo.Versioning, Equals, "")
  1584. // put and get object success
  1585. //bucket, err := client.Bucket(bucketName)
  1586. //c.Assert(err, IsNil)
  1587. // put object success
  1588. //objectName := objectNamePrefix + randStr(8)
  1589. //context := randStr(100)
  1590. //err = bucket.PutObject(objectName, strings.NewReader(context))
  1591. //c.Assert(err, IsNil)
  1592. // get object success
  1593. //body, err := bucket.GetObject(objectName)
  1594. //c.Assert(err, IsNil)
  1595. //str, err := readBody(body)
  1596. //c.Assert(err, IsNil)
  1597. //body.Close()
  1598. //c.Assert(str, Equals, context)
  1599. //bucket.DeleteObject(objectName)
  1600. err = client.DeleteBucket(bucketName)
  1601. c.Assert(err, IsNil)
  1602. }
  1603. func (s *OssClientSuite) TestBucketEncyptionPutObjectError(c *C) {
  1604. client, err := New(endpoint, accessID, accessKey)
  1605. c.Assert(err, IsNil)
  1606. bucketName := bucketNamePrefix + randLowStr(5)
  1607. err = client.CreateBucket(bucketName)
  1608. c.Assert(err, IsNil)
  1609. // SetBucketEncryption:KMS ,""
  1610. encryptionRule := ServerEncryptionRule{}
  1611. encryptionRule.SSEDefault.SSEAlgorithm = string(KMSAlgorithm)
  1612. encryptionRule.SSEDefault.KMSMasterKeyID = "123"
  1613. var responseHeader http.Header
  1614. err = client.SetBucketEncryption(bucketName, encryptionRule, GetResponseHeader(&responseHeader))
  1615. c.Assert(err, IsNil)
  1616. requestId := GetRequestId(responseHeader)
  1617. c.Assert(len(requestId) > 0, Equals, true)
  1618. // GetBucketEncryption
  1619. getResult, err := client.GetBucketEncryption(bucketName, GetResponseHeader(&responseHeader))
  1620. c.Assert(err, IsNil)
  1621. requestId = GetRequestId(responseHeader)
  1622. c.Assert(len(requestId) > 0, Equals, true)
  1623. // check encryption value
  1624. c.Assert(encryptionRule.SSEDefault.SSEAlgorithm, Equals, getResult.SSEDefault.SSEAlgorithm)
  1625. c.Assert(encryptionRule.SSEDefault.KMSMasterKeyID, Equals, getResult.SSEDefault.KMSMasterKeyID)
  1626. // Get default bucket info
  1627. bucketResult, err := client.GetBucketInfo(bucketName)
  1628. c.Assert(err, IsNil)
  1629. c.Assert(bucketResult.BucketInfo.SseRule.SSEAlgorithm, Equals, "KMS")
  1630. c.Assert(bucketResult.BucketInfo.SseRule.KMSMasterKeyID, Equals, "123")
  1631. c.Assert(bucketResult.BucketInfo.Versioning, Equals, "")
  1632. // put and get object failure
  1633. bucket, err := client.Bucket(bucketName)
  1634. c.Assert(err, IsNil)
  1635. // put object failure
  1636. objectName := objectNamePrefix + randStr(8)
  1637. context := randStr(100)
  1638. err = bucket.PutObject(objectName, strings.NewReader(context))
  1639. c.Assert(err, NotNil)
  1640. err = client.DeleteBucket(bucketName)
  1641. c.Assert(err, IsNil)
  1642. }
  1643. func (s *OssClientSuite) TestBucketTaggingOperation(c *C) {
  1644. client, err := New(endpoint, accessID, accessKey)
  1645. c.Assert(err, IsNil)
  1646. bucketName := bucketNamePrefix + randLowStr(5)
  1647. err = client.CreateBucket(bucketName)
  1648. c.Assert(err, IsNil)
  1649. var respHeader http.Header
  1650. // Bucket Tagging
  1651. var tagging Tagging
  1652. tagging.Tags = []Tag{Tag{Key: "testkey2", Value: "testvalue2"}}
  1653. err = client.SetBucketTagging(bucketName, tagging, GetResponseHeader(&respHeader))
  1654. c.Assert(err, IsNil)
  1655. c.Assert(GetRequestId(respHeader) != "", Equals, true)
  1656. getResult, err := client.GetBucketTagging(bucketName)
  1657. c.Assert(err, IsNil)
  1658. c.Assert(getResult.Tags[0].Key, Equals, tagging.Tags[0].Key)
  1659. c.Assert(getResult.Tags[0].Value, Equals, tagging.Tags[0].Value)
  1660. // delete BucketTagging
  1661. err = client.DeleteBucketTagging(bucketName, GetResponseHeader(&respHeader))
  1662. c.Assert(err, IsNil)
  1663. c.Assert(GetRequestId(respHeader) != "", Equals, true)
  1664. getResult, err = client.GetBucketTagging(bucketName, GetResponseHeader(&respHeader))
  1665. c.Assert(err, IsNil)
  1666. c.Assert(GetRequestId(respHeader) != "", Equals, true)
  1667. c.Assert(len(getResult.Tags), Equals, 0)
  1668. err = client.DeleteBucket(bucketName)
  1669. c.Assert(err, IsNil)
  1670. }
  1671. func (s *OssClientSuite) TestListBucketsTagging(c *C) {
  1672. client, err := New(endpoint, accessID, accessKey)
  1673. c.Assert(err, IsNil)
  1674. bucketName1 := bucketNamePrefix + randLowStr(5)
  1675. err = client.CreateBucket(bucketName1)
  1676. c.Assert(err, IsNil)
  1677. bucketName2 := bucketNamePrefix + randLowStr(5)
  1678. err = client.CreateBucket(bucketName2)
  1679. c.Assert(err, IsNil)
  1680. // Bucket Tagging
  1681. var tagging Tagging
  1682. tagging.Tags = []Tag{Tag{Key: "testkey", Value: "testvalue"}}
  1683. err = client.SetBucketTagging(bucketName1, tagging)
  1684. c.Assert(err, IsNil)
  1685. // list bucket
  1686. listResult, err := client.ListBuckets(TagKey("testkey"))
  1687. c.Assert(err, IsNil)
  1688. c.Assert(len(listResult.Buckets), Equals, 1)
  1689. c.Assert(listResult.Buckets[0].Name, Equals, bucketName1)
  1690. client.DeleteBucket(bucketName1)
  1691. client.DeleteBucket(bucketName2)
  1692. }
  1693. func (s *OssClientSuite) TestGetBucketStat(c *C) {
  1694. client, err := New(endpoint, accessID, accessKey)
  1695. c.Assert(err, IsNil)
  1696. bucketName := bucketNamePrefix + randLowStr(5)
  1697. err = client.CreateBucket(bucketName)
  1698. c.Assert(err, IsNil)
  1699. bucket, err := client.Bucket(bucketName)
  1700. c.Assert(err, IsNil)
  1701. // put object
  1702. objectName := objectNamePrefix + randLowStr(5)
  1703. err = bucket.PutObject(objectName, strings.NewReader(randStr(10)))
  1704. c.Assert(err, IsNil)
  1705. bucket.DeleteObject(objectName)
  1706. err = bucket.PutObject(objectName, strings.NewReader(randStr(10)))
  1707. c.Assert(err, IsNil)
  1708. bucket.DeleteObject(objectName)
  1709. _, err = client.GetBucketStat(bucketName)
  1710. c.Assert(err, IsNil)
  1711. client.DeleteBucket(bucketName)
  1712. }
  1713. func (s *OssBucketSuite) TestGetBucketVersioning(c *C) {
  1714. // create a bucket with default proprety
  1715. client, err := New(endpoint, accessID, accessKey)
  1716. c.Assert(err, IsNil)
  1717. bucketName := bucketNamePrefix + randLowStr(6)
  1718. var respHeader http.Header
  1719. err = client.CreateBucket(bucketName, GetResponseHeader(&respHeader))
  1720. c.Assert(err, IsNil)
  1721. c.Assert(GetRequestId(respHeader) != "", Equals, true)
  1722. // put bucket version:enabled
  1723. var versioningConfig VersioningConfig
  1724. versioningConfig.Status = string(VersionEnabled)
  1725. err = client.SetBucketVersioning(bucketName, versioningConfig)
  1726. c.Assert(err, IsNil)
  1727. // get bucket version success
  1728. versioningResult, err := client.GetBucketVersioning(bucketName, GetResponseHeader(&respHeader))
  1729. c.Assert(versioningResult.Status, Equals, "Enabled")
  1730. c.Assert(GetRequestId(respHeader) != "", Equals, true)
  1731. forceDeleteBucket(client, bucketName, c)
  1732. }