client_test.go 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458
  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. "log"
  7. "os"
  8. "strings"
  9. "testing"
  10. "time"
  11. . "gopkg.in/check.v1"
  12. )
  13. // Hook up gocheck into the "go test" runner.
  14. func Test(t *testing.T) {
  15. TestingT(t)
  16. }
  17. type OssClientSuite struct{}
  18. var _ = Suite(&OssClientSuite{})
  19. var (
  20. // endpoint/id/key
  21. endpoint = os.Getenv("OSS_TEST_ENDPOINT")
  22. accessID = os.Getenv("OSS_TEST_ACCESS_KEY_ID")
  23. accessKey = os.Getenv("OSS_TEST_ACCESS_KEY_SECRET")
  24. // proxy
  25. proxyHost = os.Getenv("OSS_TEST_PROXY_HOST")
  26. proxyUser = os.Getenv("OSS_TEST_PROXY_USER")
  27. proxyPasswd = os.Getenv("OSS_TEST_PROXY_PASSWORD")
  28. // sts
  29. stsaccessID = os.Getenv("OSS_TEST_STS_ID")
  30. stsaccessKey = os.Getenv("OSS_TEST_STS_KEY")
  31. stsARN = os.Getenv("OSS_TEST_STS_ARN")
  32. )
  33. const (
  34. // prefix of bucket name for bucket ops test
  35. bucketNamePrefix = "go-sdk-test-bucket-xyz-"
  36. // bucket name for object ops test
  37. bucketName = "go-sdk-test-bucket-xyz-for-object"
  38. archiveBucketName = "go-sdk-test-bucket-xyz-for-archive"
  39. // object name for object ops test
  40. objectNamePrefix = "go-sdk-test-object-xyz-"
  41. // sts region is one and only hangzhou
  42. stsRegion = "cn-hangzhou"
  43. )
  44. var (
  45. logPath = "go_sdk_test_" + time.Now().Format("20060102_150405") + ".log"
  46. testLogFile, _ = os.OpenFile(logPath, os.O_RDWR|os.O_CREATE, 0664)
  47. testLogger = log.New(testLogFile, "", log.Ldate|log.Ltime|log.Lshortfile)
  48. )
  49. // Run once when the suite starts running
  50. func (s *OssClientSuite) SetUpSuite(c *C) {
  51. client, err := New(endpoint, accessID, accessKey)
  52. c.Assert(err, IsNil)
  53. lbr, err := client.ListBuckets(Prefix(bucketNamePrefix), MaxKeys(1000))
  54. c.Assert(err, IsNil)
  55. for _, bucket := range lbr.Buckets {
  56. s.deleteBucket(client, bucket.Name, c)
  57. }
  58. testLogger.Println("test client started")
  59. }
  60. // Run before each test or benchmark starts running
  61. func (s *OssClientSuite) TearDownSuite(c *C) {
  62. client, err := New(endpoint, accessID, accessKey)
  63. c.Assert(err, IsNil)
  64. lbr, err := client.ListBuckets(Prefix(bucketNamePrefix), MaxKeys(1000))
  65. c.Assert(err, IsNil)
  66. for _, bucket := range lbr.Buckets {
  67. s.deleteBucket(client, bucket.Name, c)
  68. }
  69. testLogger.Println("test client completed")
  70. }
  71. func (s *OssClientSuite) deleteBucket(client *Client, bucketName string, c *C) {
  72. bucket, err := client.Bucket(bucketName)
  73. c.Assert(err, IsNil)
  74. // Delete Object
  75. lor, err := bucket.ListObjects()
  76. c.Assert(err, IsNil)
  77. for _, object := range lor.Objects {
  78. err = bucket.DeleteObject(object.Key)
  79. c.Assert(err, IsNil)
  80. }
  81. // Delete Part
  82. lmur, err := bucket.ListMultipartUploads()
  83. c.Assert(err, IsNil)
  84. for _, upload := range lmur.Uploads {
  85. var imur = InitiateMultipartUploadResult{Bucket: bucketName,
  86. Key: upload.Key, UploadID: upload.UploadID}
  87. err = bucket.AbortMultipartUpload(imur)
  88. c.Assert(err, IsNil)
  89. }
  90. // Delete Bucket
  91. err = client.DeleteBucket(bucketName)
  92. c.Assert(err, IsNil)
  93. }
  94. // Run after each test or benchmark runs
  95. func (s *OssClientSuite) SetUpTest(c *C) {
  96. }
  97. // Run once after all tests or benchmarks have finished running
  98. func (s *OssClientSuite) TearDownTest(c *C) {
  99. }
  100. // TestCreateBucket
  101. func (s *OssClientSuite) TestCreateBucket(c *C) {
  102. var bucketNameTest = bucketNamePrefix + "tcb"
  103. client, err := New(endpoint, accessID, accessKey)
  104. c.Assert(err, IsNil)
  105. // Create
  106. client.DeleteBucket(bucketNameTest)
  107. err = client.CreateBucket(bucketNameTest)
  108. c.Assert(err, IsNil)
  109. // Check
  110. lbr, err := client.ListBuckets()
  111. c.Assert(err, IsNil)
  112. found := s.checkBucket(lbr.Buckets, bucketNameTest)
  113. c.Assert(found, Equals, true)
  114. time.Sleep(5 * time.Second)
  115. res, err := client.GetBucketACL(bucketNameTest)
  116. c.Assert(err, IsNil)
  117. c.Assert(res.ACL, Equals, string(ACLPrivate))
  118. err = client.DeleteBucket(bucketNameTest)
  119. c.Assert(err, IsNil)
  120. // Create with ACLPublicRead
  121. err = client.CreateBucket(bucketNameTest, ACL(ACLPublicRead))
  122. c.Assert(err, IsNil)
  123. time.Sleep(5 * time.Second)
  124. res, err = client.GetBucketACL(bucketNameTest)
  125. c.Assert(err, IsNil)
  126. c.Assert(res.ACL, Equals, string(ACLPublicRead))
  127. err = client.DeleteBucket(bucketNameTest)
  128. c.Assert(err, IsNil)
  129. time.Sleep(5 * time.Second)
  130. // ACLPublicReadWrite
  131. err = client.CreateBucket(bucketNameTest, ACL(ACLPublicReadWrite))
  132. c.Assert(err, IsNil)
  133. res, err = client.GetBucketACL(bucketNameTest)
  134. c.Assert(err, IsNil)
  135. c.Assert(res.ACL, Equals, string(ACLPublicReadWrite))
  136. err = client.DeleteBucket(bucketNameTest)
  137. c.Assert(err, IsNil)
  138. time.Sleep(5 * time.Second)
  139. // ACLPrivate
  140. err = client.CreateBucket(bucketNameTest, ACL(ACLPrivate))
  141. c.Assert(err, IsNil)
  142. res, err = client.GetBucketACL(bucketNameTest)
  143. c.Assert(err, IsNil)
  144. c.Assert(res.ACL, Equals, string(ACLPrivate))
  145. // Delete
  146. err = client.DeleteBucket(bucketNameTest)
  147. c.Assert(err, IsNil)
  148. // create bucket with config and test get bucket info
  149. for _, storage := range []StorageClassType{StorageStandard, StorageIA, StorageArchive} {
  150. cbConfig := CreateBucketConfiguration{StorageClass: storage}
  151. err = client.DoCreateBucket(bucketNameTest, cbConfig, ACL(ACLPublicRead))
  152. c.Assert(err, IsNil)
  153. res, err := client.GetBucketInfo(bucketNameTest)
  154. c.Assert(err, IsNil)
  155. c.Assert(res.BucketInfo.Name, Equals, bucketNameTest)
  156. c.Assert(res.BucketInfo.StorageClass, Equals, string(storage))
  157. c.Assert(res.BucketInfo.ACL, Equals, string(ACLPublicRead))
  158. // Delete
  159. err = client.DeleteBucket(bucketNameTest)
  160. c.Assert(err, IsNil)
  161. }
  162. // error put bucket with config
  163. cbConfig := CreateBucketConfiguration{StorageClass: StorageArchive}
  164. err = client.DoCreateBucket("ERRORBUCKETNAME", cbConfig)
  165. c.Assert(err, NotNil)
  166. // create bucket with config and test list bucket
  167. for _, storage := range []StorageClassType{StorageStandard, StorageIA, StorageArchive} {
  168. cbConfig := CreateBucketConfiguration{StorageClass: storage}
  169. err = client.DoCreateBucket(bucketNameTest, cbConfig)
  170. c.Assert(err, IsNil)
  171. res, err := client.ListBuckets()
  172. c.Assert(err, IsNil)
  173. exist, b := s.getBucket(res.Buckets, bucketNameTest)
  174. c.Assert(exist, Equals, true)
  175. c.Assert(b.Name, Equals, bucketNameTest)
  176. c.Assert(b.StorageClass, Equals, string(storage))
  177. // Delete
  178. err = client.DeleteBucket(bucketNameTest)
  179. c.Assert(err, IsNil)
  180. }
  181. }
  182. // TestCreateBucketNegative
  183. func (s *OssClientSuite) TestCreateBucketNegative(c *C) {
  184. client, err := New(endpoint, accessID, accessKey)
  185. c.Assert(err, IsNil)
  186. // BucketName invalid
  187. err = client.CreateBucket("xx")
  188. c.Assert(err, NotNil)
  189. err = client.CreateBucket("XXXX")
  190. c.Assert(err, NotNil)
  191. testLogger.Println(err)
  192. err = client.CreateBucket("_bucket")
  193. c.Assert(err, NotNil)
  194. testLogger.Println(err)
  195. // Acl invalid
  196. err = client.CreateBucket(bucketNamePrefix+"tcbn", ACL("InvaldAcl"))
  197. c.Assert(err, NotNil)
  198. testLogger.Println(err)
  199. }
  200. // TestDeleteBucket
  201. func (s *OssClientSuite) TestDeleteBucket(c *C) {
  202. var bucketNameTest = bucketNamePrefix + "tdb"
  203. client, err := New(endpoint, accessID, accessKey)
  204. c.Assert(err, IsNil)
  205. // Create
  206. err = client.CreateBucket(bucketNameTest)
  207. c.Assert(err, IsNil)
  208. // Check
  209. lbr, err := client.ListBuckets()
  210. c.Assert(err, IsNil)
  211. found := s.checkBucket(lbr.Buckets, bucketNameTest)
  212. c.Assert(found, Equals, true)
  213. // Delete
  214. err = client.DeleteBucket(bucketNameTest)
  215. c.Assert(err, IsNil)
  216. time.Sleep(time.Second * 1)
  217. // Check
  218. lbr, err = client.ListBuckets()
  219. c.Assert(err, IsNil)
  220. // Sometimes failed because of cache
  221. found = s.checkBucket(lbr.Buckets, bucketNameTest)
  222. // c.Assert(found, Equals, false)
  223. err = client.DeleteBucket(bucketNameTest)
  224. // c.Assert(err, IsNil)
  225. }
  226. // TestDeleteBucketNegative
  227. func (s *OssClientSuite) TestDeleteBucketNegative(c *C) {
  228. var bucketNameTest = bucketNamePrefix + "tdbn"
  229. client, err := New(endpoint, accessID, accessKey)
  230. c.Assert(err, IsNil)
  231. // BucketName invalid
  232. err = client.DeleteBucket("xx")
  233. c.Assert(err, NotNil)
  234. err = client.DeleteBucket("XXXX")
  235. c.Assert(err, NotNil)
  236. err = client.DeleteBucket("_bucket")
  237. c.Assert(err, NotNil)
  238. // Delete no exist
  239. err = client.DeleteBucket("notexist")
  240. c.Assert(err, NotNil)
  241. // No permission to delete, this ak/sk for js sdk
  242. err = client.CreateBucket(bucketNameTest)
  243. c.Assert(err, IsNil)
  244. accessID := "<accessKeyId>"
  245. accessKey := "<accessKeySecret>"
  246. clientOtherUser, err := New(endpoint, accessID, accessKey)
  247. c.Assert(err, IsNil)
  248. err = clientOtherUser.DeleteBucket(bucketNameTest)
  249. c.Assert(err, NotNil)
  250. err = client.DeleteBucket(bucketNameTest)
  251. c.Assert(err, IsNil)
  252. }
  253. // TestListBucket
  254. func (s *OssClientSuite) TestListBucket(c *C) {
  255. var bucketNameLbOne = bucketNamePrefix + "tlb1"
  256. var bucketNameLbTwo = bucketNamePrefix + "tlb2"
  257. var bucketNameLbThree = bucketNamePrefix + "tlb3"
  258. client, err := New(endpoint, accessID, accessKey)
  259. c.Assert(err, IsNil)
  260. // CreateBucket
  261. err = client.CreateBucket(bucketNameLbOne)
  262. c.Assert(err, IsNil)
  263. err = client.CreateBucket(bucketNameLbTwo)
  264. c.Assert(err, IsNil)
  265. err = client.CreateBucket(bucketNameLbThree)
  266. c.Assert(err, IsNil)
  267. // ListBuckets, specified prefix
  268. lbr, err := client.ListBuckets(Prefix(bucketNamePrefix), MaxKeys(2))
  269. c.Assert(err, IsNil)
  270. c.Assert(len(lbr.Buckets), Equals, 2)
  271. // ListBuckets, specified max keys
  272. lbr, err = client.ListBuckets(MaxKeys(2))
  273. c.Assert(err, IsNil)
  274. c.Assert(len(lbr.Buckets), Equals, 2)
  275. // ListBuckets, specified max keys
  276. lbr, err = client.ListBuckets(Marker(bucketNameLbOne), MaxKeys(1))
  277. c.Assert(err, IsNil)
  278. c.Assert(len(lbr.Buckets), Equals, 1)
  279. // ListBuckets, specified max keys
  280. lbr, err = client.ListBuckets(Marker(bucketNameLbOne))
  281. c.Assert(err, IsNil)
  282. c.Assert(len(lbr.Buckets) >= 2, Equals, true)
  283. // DeleteBucket
  284. err = client.DeleteBucket(bucketNameLbOne)
  285. c.Assert(err, IsNil)
  286. err = client.DeleteBucket(bucketNameLbTwo)
  287. c.Assert(err, IsNil)
  288. err = client.DeleteBucket(bucketNameLbThree)
  289. c.Assert(err, IsNil)
  290. }
  291. // TestListBucket
  292. func (s *OssClientSuite) TestIsBucketExist(c *C) {
  293. var bucketNameLbOne = bucketNamePrefix + "tibe1"
  294. var bucketNameLbTwo = bucketNamePrefix + "tibe11"
  295. var bucketNameLbThree = bucketNamePrefix + "tibe111"
  296. client, err := New(endpoint, accessID, accessKey)
  297. c.Assert(err, IsNil)
  298. // CreateBucket
  299. err = client.CreateBucket(bucketNameLbOne)
  300. c.Assert(err, IsNil)
  301. err = client.CreateBucket(bucketNameLbTwo)
  302. c.Assert(err, IsNil)
  303. err = client.CreateBucket(bucketNameLbThree)
  304. c.Assert(err, IsNil)
  305. // exist
  306. exist, err := client.IsBucketExist(bucketNameLbTwo)
  307. c.Assert(err, IsNil)
  308. c.Assert(exist, Equals, true)
  309. exist, err = client.IsBucketExist(bucketNameLbThree)
  310. c.Assert(err, IsNil)
  311. c.Assert(exist, Equals, true)
  312. exist, err = client.IsBucketExist(bucketNameLbOne)
  313. c.Assert(err, IsNil)
  314. c.Assert(exist, Equals, true)
  315. // not exist
  316. exist, err = client.IsBucketExist(bucketNamePrefix + "tibe")
  317. c.Assert(err, IsNil)
  318. c.Assert(exist, Equals, false)
  319. exist, err = client.IsBucketExist(bucketNamePrefix + "tibe1111")
  320. c.Assert(err, IsNil)
  321. c.Assert(exist, Equals, false)
  322. // negative
  323. exist, err = client.IsBucketExist("BucketNameInvalid")
  324. c.Assert(err, NotNil)
  325. // DeleteBucket
  326. err = client.DeleteBucket(bucketNameLbOne)
  327. c.Assert(err, IsNil)
  328. err = client.DeleteBucket(bucketNameLbTwo)
  329. c.Assert(err, IsNil)
  330. err = client.DeleteBucket(bucketNameLbThree)
  331. c.Assert(err, IsNil)
  332. }
  333. // TestSetBucketAcl
  334. func (s *OssClientSuite) TestSetBucketAcl(c *C) {
  335. var bucketNameTest = bucketNamePrefix + "tsba"
  336. client, err := New(endpoint, accessID, accessKey)
  337. c.Assert(err, IsNil)
  338. // Private
  339. err = client.CreateBucket(bucketNameTest)
  340. c.Assert(err, IsNil)
  341. res, err := client.GetBucketACL(bucketNameTest)
  342. c.Assert(err, IsNil)
  343. c.Assert(res.ACL, Equals, string(ACLPrivate))
  344. // set ACL_PUBLIC_R
  345. err = client.SetBucketACL(bucketNameTest, ACLPublicRead)
  346. c.Assert(err, IsNil)
  347. time.Sleep(5 * time.Second)
  348. res, err = client.GetBucketACL(bucketNameTest)
  349. c.Assert(err, IsNil)
  350. c.Assert(res.ACL, Equals, string(ACLPublicRead))
  351. // set ACL_PUBLIC_RW
  352. err = client.SetBucketACL(bucketNameTest, ACLPublicReadWrite)
  353. c.Assert(err, IsNil)
  354. time.Sleep(5 * time.Second)
  355. res, err = client.GetBucketACL(bucketNameTest)
  356. c.Assert(err, IsNil)
  357. c.Assert(res.ACL, Equals, string(ACLPublicReadWrite))
  358. // set ACL_PUBLIC_RW
  359. err = client.SetBucketACL(bucketNameTest, ACLPrivate)
  360. c.Assert(err, IsNil)
  361. err = client.SetBucketACL(bucketNameTest, ACLPrivate)
  362. c.Assert(err, IsNil)
  363. time.Sleep(5 * time.Second)
  364. res, err = client.GetBucketACL(bucketNameTest)
  365. c.Assert(err, IsNil)
  366. c.Assert(res.ACL, Equals, string(ACLPrivate))
  367. err = client.DeleteBucket(bucketNameTest)
  368. c.Assert(err, IsNil)
  369. }
  370. // TestSetBucketAclNegative
  371. func (s *OssClientSuite) TestBucketAclNegative(c *C) {
  372. var bucketNameTest = bucketNamePrefix + "tsban"
  373. client, err := New(endpoint, accessID, accessKey)
  374. c.Assert(err, IsNil)
  375. err = client.CreateBucket(bucketNameTest)
  376. c.Assert(err, IsNil)
  377. err = client.SetBucketACL(bucketNameTest, "InvalidACL")
  378. c.Assert(err, NotNil)
  379. testLogger.Println(err)
  380. err = client.DeleteBucket(bucketNameTest)
  381. c.Assert(err, IsNil)
  382. }
  383. // TestGetBucketAcl
  384. func (s *OssClientSuite) TestGetBucketAcl(c *C) {
  385. var bucketNameTest = bucketNamePrefix + "tgba"
  386. client, err := New(endpoint, accessID, accessKey)
  387. c.Assert(err, IsNil)
  388. // Private
  389. err = client.CreateBucket(bucketNameTest)
  390. c.Assert(err, IsNil)
  391. res, err := client.GetBucketACL(bucketNameTest)
  392. c.Assert(err, IsNil)
  393. c.Assert(res.ACL, Equals, string(ACLPrivate))
  394. err = client.DeleteBucket(bucketNameTest)
  395. c.Assert(err, IsNil)
  396. time.Sleep(5 * time.Second)
  397. // PublicRead
  398. err = client.CreateBucket(bucketNameTest, ACL(ACLPublicRead))
  399. c.Assert(err, IsNil)
  400. time.Sleep(5 * time.Second)
  401. res, err = client.GetBucketACL(bucketNameTest)
  402. c.Assert(err, IsNil)
  403. c.Assert(res.ACL, Equals, string(ACLPublicRead))
  404. err = client.DeleteBucket(bucketNameTest)
  405. c.Assert(err, IsNil)
  406. time.Sleep(5 * time.Second)
  407. // PublicReadWrite
  408. err = client.CreateBucket(bucketNameTest, ACL(ACLPublicReadWrite))
  409. c.Assert(err, IsNil)
  410. time.Sleep(5 * time.Second)
  411. res, err = client.GetBucketACL(bucketNameTest)
  412. c.Assert(err, IsNil)
  413. c.Assert(res.ACL, Equals, string(ACLPublicReadWrite))
  414. err = client.DeleteBucket(bucketNameTest)
  415. c.Assert(err, IsNil)
  416. }
  417. // TestGetBucketAcl
  418. func (s *OssClientSuite) TestGetBucketLocation(c *C) {
  419. var bucketNameTest = bucketNamePrefix + "tgbl"
  420. client, err := New(endpoint, accessID, accessKey)
  421. c.Assert(err, IsNil)
  422. // Private
  423. err = client.CreateBucket(bucketNameTest)
  424. c.Assert(err, IsNil)
  425. loc, err := client.GetBucketLocation(bucketNameTest)
  426. c.Assert(strings.HasPrefix(loc, "oss-"), Equals, true)
  427. err = client.DeleteBucket(bucketNameTest)
  428. c.Assert(err, IsNil)
  429. }
  430. // TestGetBucketLocationNegative
  431. func (s *OssClientSuite) TestGetBucketLocationNegative(c *C) {
  432. var bucketNameTest = bucketNamePrefix + "tgblg"
  433. client, err := New(endpoint, accessID, accessKey)
  434. c.Assert(err, IsNil)
  435. // not exist
  436. _, err = client.GetBucketLocation(bucketNameTest)
  437. c.Assert(err, NotNil)
  438. // not exist
  439. _, err = client.GetBucketLocation("InvalidBucketName_")
  440. c.Assert(err, NotNil)
  441. }
  442. // TestSetBucketLifecycle
  443. func (s *OssClientSuite) TestSetBucketLifecycle(c *C) {
  444. var bucketNameTest = bucketNamePrefix + "tsbl"
  445. var rule1 = BuildLifecycleRuleByDate("idone", "one", true, 2015, 11, 11)
  446. var rule2 = BuildLifecycleRuleByDays("idtwo", "two", true, 3)
  447. client, err := New(endpoint, accessID, accessKey)
  448. c.Assert(err, IsNil)
  449. err = client.CreateBucket(bucketNameTest)
  450. c.Assert(err, IsNil)
  451. // set single rule
  452. var rules = []LifecycleRule{rule1}
  453. err = client.SetBucketLifecycle(bucketNameTest, rules)
  454. c.Assert(err, IsNil)
  455. // double set rule
  456. err = client.SetBucketLifecycle(bucketNameTest, rules)
  457. c.Assert(err, IsNil)
  458. res, err := client.GetBucketLifecycle(bucketNameTest)
  459. c.Assert(err, IsNil)
  460. c.Assert(len(res.Rules), Equals, 1)
  461. c.Assert(res.Rules[0].ID, Equals, "idone")
  462. err = client.DeleteBucketLifecycle(bucketNameTest)
  463. c.Assert(err, IsNil)
  464. // set two rules
  465. rules = []LifecycleRule{rule1, rule2}
  466. err = client.SetBucketLifecycle(bucketNameTest, rules)
  467. c.Assert(err, IsNil)
  468. // eliminate effect of cache
  469. time.Sleep(5 * time.Second)
  470. res, err = client.GetBucketLifecycle(bucketNameTest)
  471. c.Assert(err, IsNil)
  472. c.Assert(len(res.Rules), Equals, 2)
  473. c.Assert(res.Rules[0].ID, Equals, "idone")
  474. c.Assert(res.Rules[1].ID, Equals, "idtwo")
  475. err = client.DeleteBucket(bucketNameTest)
  476. c.Assert(err, IsNil)
  477. }
  478. // TestDeleteBucketLifecycle
  479. func (s *OssClientSuite) TestDeleteBucketLifecycle(c *C) {
  480. var bucketNameTest = bucketNamePrefix + "tdbl"
  481. var rule1 = BuildLifecycleRuleByDate("idone", "one", true, 2015, 11, 11)
  482. var rule2 = BuildLifecycleRuleByDays("idtwo", "two", true, 3)
  483. var rules = []LifecycleRule{rule1, rule2}
  484. client, err := New(endpoint, accessID, accessKey)
  485. c.Assert(err, IsNil)
  486. err = client.CreateBucket(bucketNameTest)
  487. c.Assert(err, IsNil)
  488. err = client.DeleteBucketLifecycle(bucketNameTest)
  489. c.Assert(err, IsNil)
  490. err = client.SetBucketLifecycle(bucketNameTest, rules)
  491. c.Assert(err, IsNil)
  492. time.Sleep(5 * time.Second)
  493. res, err := client.GetBucketLifecycle(bucketNameTest)
  494. c.Assert(err, IsNil)
  495. c.Assert(len(res.Rules), Equals, 2)
  496. // delete
  497. err = client.DeleteBucketLifecycle(bucketNameTest)
  498. c.Assert(err, IsNil)
  499. time.Sleep(5 * time.Second)
  500. res, err = client.GetBucketLifecycle(bucketNameTest)
  501. c.Assert(err, NotNil)
  502. // eliminate effect of cache
  503. time.Sleep(time.Second * 3)
  504. // delete when not set
  505. err = client.DeleteBucketLifecycle(bucketNameTest)
  506. c.Assert(err, IsNil)
  507. err = client.DeleteBucket(bucketNameTest)
  508. c.Assert(err, IsNil)
  509. }
  510. // TestSetBucketLifecycleNegative
  511. func (s *OssClientSuite) TestBucketLifecycleNegative(c *C) {
  512. var bucketNameTest = bucketNamePrefix + "tsbln"
  513. var rules = []LifecycleRule{}
  514. client, err := New(endpoint, accessID, accessKey)
  515. c.Assert(err, IsNil)
  516. err = client.CreateBucket(bucketNameTest)
  517. c.Assert(err, IsNil)
  518. // set with no rule
  519. err = client.SetBucketLifecycle(bucketNameTest, rules)
  520. c.Assert(err, NotNil)
  521. err = client.DeleteBucket(bucketNameTest)
  522. c.Assert(err, IsNil)
  523. // not exist
  524. err = client.SetBucketLifecycle(bucketNameTest, rules)
  525. c.Assert(err, NotNil)
  526. // not exist
  527. _, err = client.GetBucketLifecycle(bucketNameTest)
  528. c.Assert(err, NotNil)
  529. // not exist
  530. err = client.DeleteBucketLifecycle(bucketNameTest)
  531. c.Assert(err, NotNil)
  532. }
  533. // TestSetBucketReferer
  534. func (s *OssClientSuite) TestSetBucketReferer(c *C) {
  535. var bucketNameTest = bucketNamePrefix + "tsbr"
  536. var referers = []string{"http://www.aliyun.com", "https://www.aliyun.com"}
  537. client, err := New(endpoint, accessID, accessKey)
  538. c.Assert(err, IsNil)
  539. err = client.CreateBucket(bucketNameTest)
  540. c.Assert(err, IsNil)
  541. res, err := client.GetBucketReferer(bucketNameTest)
  542. c.Assert(res.AllowEmptyReferer, Equals, true)
  543. c.Assert(len(res.RefererList), Equals, 0)
  544. // set referers
  545. err = client.SetBucketReferer(bucketNameTest, referers, false)
  546. c.Assert(err, IsNil)
  547. time.Sleep(5 * time.Second)
  548. res, err = client.GetBucketReferer(bucketNameTest)
  549. c.Assert(res.AllowEmptyReferer, Equals, false)
  550. c.Assert(len(res.RefererList), Equals, 2)
  551. c.Assert(res.RefererList[0], Equals, "http://www.aliyun.com")
  552. c.Assert(res.RefererList[1], Equals, "https://www.aliyun.com")
  553. // reset referer, referers empty
  554. referers = []string{""}
  555. err = client.SetBucketReferer(bucketNameTest, referers, true)
  556. c.Assert(err, IsNil)
  557. referers = []string{}
  558. err = client.SetBucketReferer(bucketNameTest, referers, true)
  559. c.Assert(err, IsNil)
  560. res, err = client.GetBucketReferer(bucketNameTest)
  561. c.Assert(res.AllowEmptyReferer, Equals, true)
  562. c.Assert(len(res.RefererList), Equals, 0)
  563. err = client.DeleteBucket(bucketNameTest)
  564. c.Assert(err, IsNil)
  565. }
  566. // TestSetBucketRefererNegative
  567. func (s *OssClientSuite) TestBucketRefererNegative(c *C) {
  568. var bucketNameTest = bucketNamePrefix + "tsbrn"
  569. var referers = []string{""}
  570. client, err := New(endpoint, accessID, accessKey)
  571. c.Assert(err, IsNil)
  572. // not exist
  573. _, err = client.GetBucketReferer(bucketNameTest)
  574. c.Assert(err, NotNil)
  575. testLogger.Println(err)
  576. // not exist
  577. err = client.SetBucketReferer(bucketNameTest, referers, true)
  578. c.Assert(err, NotNil)
  579. testLogger.Println(err)
  580. }
  581. // TestSetBucketLogging
  582. func (s *OssClientSuite) TestSetBucketLogging(c *C) {
  583. var bucketNameTest = bucketNamePrefix + "tsbll"
  584. var bucketNameTarget = bucketNamePrefix + "tsbllt"
  585. client, err := New(endpoint, accessID, accessKey)
  586. c.Assert(err, IsNil)
  587. err = client.CreateBucket(bucketNameTest)
  588. c.Assert(err, IsNil)
  589. err = client.CreateBucket(bucketNameTarget)
  590. c.Assert(err, IsNil)
  591. time.Sleep(5 * time.Second)
  592. // set logging
  593. err = client.SetBucketLogging(bucketNameTest, bucketNameTarget, "prefix", true)
  594. c.Assert(err, IsNil)
  595. // reset
  596. err = client.SetBucketLogging(bucketNameTest, bucketNameTarget, "prefix", false)
  597. c.Assert(err, IsNil)
  598. time.Sleep(5 * time.Second)
  599. res, err := client.GetBucketLogging(bucketNameTest)
  600. c.Assert(err, IsNil)
  601. c.Assert(res.LoggingEnabled.TargetBucket, Equals, "")
  602. c.Assert(res.LoggingEnabled.TargetPrefix, Equals, "")
  603. err = client.DeleteBucketLogging(bucketNameTest)
  604. c.Assert(err, IsNil)
  605. // set to self
  606. err = client.SetBucketLogging(bucketNameTest, bucketNameTest, "prefix", true)
  607. c.Assert(err, IsNil)
  608. err = client.DeleteBucket(bucketNameTest)
  609. c.Assert(err, IsNil)
  610. err = client.DeleteBucket(bucketNameTarget)
  611. c.Assert(err, IsNil)
  612. }
  613. // TestDeleteBucketLogging
  614. func (s *OssClientSuite) TestDeleteBucketLogging(c *C) {
  615. var bucketNameTest = bucketNamePrefix + "tdbl"
  616. var bucketNameTarget = bucketNamePrefix + "tdblt"
  617. client, err := New(endpoint, accessID, accessKey)
  618. c.Assert(err, IsNil)
  619. err = client.CreateBucket(bucketNameTest)
  620. c.Assert(err, IsNil)
  621. err = client.CreateBucket(bucketNameTarget)
  622. c.Assert(err, IsNil)
  623. // get when not set
  624. res, err := client.GetBucketLogging(bucketNameTest)
  625. c.Assert(err, IsNil)
  626. c.Assert(res.LoggingEnabled.TargetBucket, Equals, "")
  627. c.Assert(res.LoggingEnabled.TargetPrefix, Equals, "")
  628. // set
  629. err = client.SetBucketLogging(bucketNameTest, bucketNameTarget, "prefix", true)
  630. c.Assert(err, IsNil)
  631. // get
  632. time.Sleep(5 * time.Second)
  633. res, err = client.GetBucketLogging(bucketNameTest)
  634. c.Assert(err, IsNil)
  635. c.Assert(res.LoggingEnabled.TargetBucket, Equals, bucketNameTarget)
  636. c.Assert(res.LoggingEnabled.TargetPrefix, Equals, "prefix")
  637. // set
  638. err = client.SetBucketLogging(bucketNameTest, bucketNameTarget, "prefix", false)
  639. c.Assert(err, IsNil)
  640. // get
  641. time.Sleep(5 * time.Second)
  642. res, err = client.GetBucketLogging(bucketNameTest)
  643. c.Assert(err, IsNil)
  644. c.Assert(res.LoggingEnabled.TargetBucket, Equals, "")
  645. c.Assert(res.LoggingEnabled.TargetPrefix, Equals, "")
  646. // delete
  647. err = client.DeleteBucketLogging(bucketNameTest)
  648. c.Assert(err, IsNil)
  649. // get after delete
  650. time.Sleep(5 * time.Second)
  651. res, err = client.GetBucketLogging(bucketNameTest)
  652. c.Assert(err, IsNil)
  653. c.Assert(res.LoggingEnabled.TargetBucket, Equals, "")
  654. c.Assert(res.LoggingEnabled.TargetPrefix, Equals, "")
  655. err = client.DeleteBucket(bucketNameTest)
  656. c.Assert(err, IsNil)
  657. err = client.DeleteBucket(bucketNameTarget)
  658. c.Assert(err, IsNil)
  659. }
  660. // TestSetBucketLoggingNegative
  661. func (s *OssClientSuite) TestSetBucketLoggingNegative(c *C) {
  662. var bucketNameTest = bucketNamePrefix + "tsblnn"
  663. var bucketNameTarget = bucketNamePrefix + "tsblnnt"
  664. client, err := New(endpoint, accessID, accessKey)
  665. c.Assert(err, IsNil)
  666. // not exist
  667. _, err = client.GetBucketLogging(bucketNameTest)
  668. c.Assert(err, NotNil)
  669. // not exist
  670. err = client.SetBucketLogging(bucketNameTest, "targetbucket", "prefix", true)
  671. c.Assert(err, NotNil)
  672. // not exist
  673. err = client.DeleteBucketLogging(bucketNameTest)
  674. c.Assert(err, NotNil)
  675. err = client.CreateBucket(bucketNameTest)
  676. c.Assert(err, IsNil)
  677. time.Sleep(5 * time.Second)
  678. // target bucket not exist
  679. err = client.SetBucketLogging(bucketNameTest, bucketNameTarget, "prefix", true)
  680. c.Assert(err, NotNil)
  681. // parameter invalid
  682. err = client.SetBucketLogging(bucketNameTest, "XXXX", "prefix", true)
  683. c.Assert(err, NotNil)
  684. err = client.SetBucketLogging(bucketNameTest, "xx", "prefix", true)
  685. c.Assert(err, NotNil)
  686. err = client.DeleteBucket(bucketNameTest)
  687. c.Assert(err, IsNil)
  688. }
  689. // TestSetBucketWebsite
  690. func (s *OssClientSuite) TestSetBucketWebsite(c *C) {
  691. var bucketNameTest = bucketNamePrefix + "tsbw"
  692. var indexWebsite = "myindex.html"
  693. var errorWebsite = "myerror.html"
  694. client, err := New(endpoint, accessID, accessKey)
  695. c.Assert(err, IsNil)
  696. err = client.CreateBucket(bucketNameTest)
  697. c.Assert(err, IsNil)
  698. // set
  699. err = client.SetBucketWebsite(bucketNameTest, indexWebsite, errorWebsite)
  700. c.Assert(err, IsNil)
  701. // double set
  702. err = client.SetBucketWebsite(bucketNameTest, indexWebsite, errorWebsite)
  703. c.Assert(err, IsNil)
  704. res, err := client.GetBucketWebsite(bucketNameTest)
  705. c.Assert(err, IsNil)
  706. c.Assert(res.IndexDocument.Suffix, Equals, indexWebsite)
  707. c.Assert(res.ErrorDocument.Key, Equals, errorWebsite)
  708. // reset
  709. err = client.SetBucketWebsite(bucketNameTest, "your"+indexWebsite, "your"+errorWebsite)
  710. c.Assert(err, IsNil)
  711. time.Sleep(5 * time.Second)
  712. res, err = client.GetBucketWebsite(bucketNameTest)
  713. c.Assert(err, IsNil)
  714. c.Assert(res.IndexDocument.Suffix, Equals, "your"+indexWebsite)
  715. c.Assert(res.ErrorDocument.Key, Equals, "your"+errorWebsite)
  716. err = client.DeleteBucketWebsite(bucketNameTest)
  717. c.Assert(err, IsNil)
  718. // set after delete
  719. err = client.SetBucketWebsite(bucketNameTest, indexWebsite, errorWebsite)
  720. c.Assert(err, IsNil)
  721. // eliminate effect of cache
  722. time.Sleep(5 * time.Second)
  723. res, err = client.GetBucketWebsite(bucketNameTest)
  724. c.Assert(err, IsNil)
  725. c.Assert(res.IndexDocument.Suffix, Equals, indexWebsite)
  726. c.Assert(res.ErrorDocument.Key, Equals, errorWebsite)
  727. err = client.DeleteBucket(bucketNameTest)
  728. c.Assert(err, IsNil)
  729. }
  730. // TestDeleteBucketWebsite
  731. func (s *OssClientSuite) TestDeleteBucketWebsite(c *C) {
  732. var bucketNameTest = bucketNamePrefix + "tdbw"
  733. var indexWebsite = "myindex.html"
  734. var errorWebsite = "myerror.html"
  735. client, err := New(endpoint, accessID, accessKey)
  736. c.Assert(err, IsNil)
  737. err = client.CreateBucket(bucketNameTest)
  738. c.Assert(err, IsNil)
  739. // get
  740. res, err := client.GetBucketWebsite(bucketNameTest)
  741. c.Assert(err, NotNil)
  742. // detele without set
  743. err = client.DeleteBucketWebsite(bucketNameTest)
  744. c.Assert(err, IsNil)
  745. // set
  746. err = client.SetBucketWebsite(bucketNameTest, indexWebsite, errorWebsite)
  747. c.Assert(err, IsNil)
  748. time.Sleep(5 * time.Second)
  749. res, err = client.GetBucketWebsite(bucketNameTest)
  750. c.Assert(err, IsNil)
  751. c.Assert(res.IndexDocument.Suffix, Equals, indexWebsite)
  752. c.Assert(res.ErrorDocument.Key, Equals, errorWebsite)
  753. // detele
  754. time.Sleep(5 * time.Second)
  755. err = client.DeleteBucketWebsite(bucketNameTest)
  756. c.Assert(err, IsNil)
  757. time.Sleep(5 * time.Second)
  758. res, err = client.GetBucketWebsite(bucketNameTest)
  759. c.Assert(err, NotNil)
  760. // detele after delete
  761. err = client.DeleteBucketWebsite(bucketNameTest)
  762. c.Assert(err, IsNil)
  763. err = client.DeleteBucket(bucketNameTest)
  764. c.Assert(err, IsNil)
  765. }
  766. // TestSetBucketWebsiteNegative
  767. func (s *OssClientSuite) TestSetBucketWebsiteNegative(c *C) {
  768. var bucketNameTest = bucketNamePrefix + "tdbw"
  769. var indexWebsite = "myindex.html"
  770. var errorWebsite = "myerror.html"
  771. client, err := New(endpoint, accessID, accessKey)
  772. c.Assert(err, IsNil)
  773. err = client.DeleteBucket(bucketNameTest)
  774. // not exist
  775. _, err = client.GetBucketWebsite(bucketNameTest)
  776. c.Assert(err, NotNil)
  777. err = client.DeleteBucketWebsite(bucketNameTest)
  778. c.Assert(err, NotNil)
  779. err = client.SetBucketWebsite(bucketNameTest, indexWebsite, errorWebsite)
  780. c.Assert(err, NotNil)
  781. err = client.CreateBucket(bucketNameTest)
  782. c.Assert(err, IsNil)
  783. // set
  784. time.Sleep(5 * time.Second)
  785. err = client.SetBucketWebsite(bucketNameTest, "myindex", "myerror")
  786. c.Assert(err, IsNil)
  787. res, err := client.GetBucketWebsite(bucketNameTest)
  788. c.Assert(err, IsNil)
  789. c.Assert(res.IndexDocument.Suffix, Equals, "myindex")
  790. c.Assert(res.ErrorDocument.Key, Equals, "myerror")
  791. // detele
  792. err = client.DeleteBucketWebsite(bucketNameTest)
  793. c.Assert(err, IsNil)
  794. time.Sleep(5 * time.Second)
  795. _, err = client.GetBucketWebsite(bucketNameTest)
  796. c.Assert(err, NotNil)
  797. // detele after delete
  798. err = client.DeleteBucketWebsite(bucketNameTest)
  799. c.Assert(err, IsNil)
  800. err = client.DeleteBucket(bucketNameTest)
  801. c.Assert(err, IsNil)
  802. }
  803. // TestSetBucketWebsite
  804. func (s *OssClientSuite) TestSetBucketCORS(c *C) {
  805. var bucketNameTest = bucketNamePrefix + "tsbc"
  806. var rule1 = CORSRule{
  807. AllowedOrigin: []string{"*"},
  808. AllowedMethod: []string{"PUT", "GET", "POST"},
  809. AllowedHeader: []string{},
  810. ExposeHeader: []string{},
  811. MaxAgeSeconds: 100,
  812. }
  813. var rule2 = CORSRule{
  814. AllowedOrigin: []string{"http://www.a.com", "http://www.b.com"},
  815. AllowedMethod: []string{"GET"},
  816. AllowedHeader: []string{"Authorization"},
  817. ExposeHeader: []string{"x-oss-test", "x-oss-test1"},
  818. MaxAgeSeconds: 200,
  819. }
  820. client, err := New(endpoint, accessID, accessKey)
  821. c.Assert(err, IsNil)
  822. err = client.CreateBucket(bucketNameTest)
  823. c.Assert(err, IsNil)
  824. time.Sleep(5 * time.Second)
  825. // set
  826. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule1})
  827. c.Assert(err, IsNil)
  828. gbcr, err := client.GetBucketCORS(bucketNameTest)
  829. c.Assert(err, IsNil)
  830. c.Assert(len(gbcr.CORSRules), Equals, 1)
  831. c.Assert(len(gbcr.CORSRules[0].AllowedOrigin), Equals, 1)
  832. c.Assert(len(gbcr.CORSRules[0].AllowedMethod), Equals, 3)
  833. c.Assert(len(gbcr.CORSRules[0].AllowedHeader), Equals, 0)
  834. c.Assert(len(gbcr.CORSRules[0].ExposeHeader), Equals, 0)
  835. c.Assert(gbcr.CORSRules[0].MaxAgeSeconds, Equals, 100)
  836. // double set
  837. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule1})
  838. c.Assert(err, IsNil)
  839. gbcr, err = client.GetBucketCORS(bucketNameTest)
  840. c.Assert(err, IsNil)
  841. c.Assert(len(gbcr.CORSRules), Equals, 1)
  842. c.Assert(len(gbcr.CORSRules[0].AllowedOrigin), Equals, 1)
  843. c.Assert(len(gbcr.CORSRules[0].AllowedMethod), Equals, 3)
  844. c.Assert(len(gbcr.CORSRules[0].AllowedHeader), Equals, 0)
  845. c.Assert(len(gbcr.CORSRules[0].ExposeHeader), Equals, 0)
  846. c.Assert(gbcr.CORSRules[0].MaxAgeSeconds, Equals, 100)
  847. // set rule2
  848. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule2})
  849. c.Assert(err, IsNil)
  850. time.Sleep(5 * time.Second)
  851. gbcr, err = client.GetBucketCORS(bucketNameTest)
  852. c.Assert(err, IsNil)
  853. c.Assert(len(gbcr.CORSRules), Equals, 1)
  854. c.Assert(len(gbcr.CORSRules[0].AllowedOrigin), Equals, 2)
  855. c.Assert(len(gbcr.CORSRules[0].AllowedMethod), Equals, 1)
  856. c.Assert(len(gbcr.CORSRules[0].AllowedHeader), Equals, 1)
  857. c.Assert(len(gbcr.CORSRules[0].ExposeHeader), Equals, 2)
  858. c.Assert(gbcr.CORSRules[0].MaxAgeSeconds, Equals, 200)
  859. // reset
  860. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule1, rule2})
  861. c.Assert(err, IsNil)
  862. time.Sleep(5 * time.Second)
  863. gbcr, err = client.GetBucketCORS(bucketNameTest)
  864. c.Assert(err, IsNil)
  865. c.Assert(len(gbcr.CORSRules), Equals, 2)
  866. // set after delete
  867. err = client.DeleteBucketCORS(bucketNameTest)
  868. c.Assert(err, IsNil)
  869. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule1, rule2})
  870. c.Assert(err, IsNil)
  871. time.Sleep(5 * time.Second)
  872. gbcr, err = client.GetBucketCORS(bucketNameTest)
  873. c.Assert(err, IsNil)
  874. c.Assert(len(gbcr.CORSRules), Equals, 2)
  875. err = client.DeleteBucketCORS(bucketNameTest)
  876. c.Assert(err, IsNil)
  877. err = client.DeleteBucket(bucketNameTest)
  878. c.Assert(err, IsNil)
  879. }
  880. // TestDeleteBucketCORS
  881. func (s *OssClientSuite) TestDeleteBucketCORS(c *C) {
  882. var bucketNameTest = bucketNamePrefix + "tdbc"
  883. var rule = CORSRule{
  884. AllowedOrigin: []string{"*"},
  885. AllowedMethod: []string{"PUT", "GET", "POST"},
  886. AllowedHeader: []string{},
  887. ExposeHeader: []string{},
  888. MaxAgeSeconds: 100,
  889. }
  890. client, err := New(endpoint, accessID, accessKey)
  891. c.Assert(err, IsNil)
  892. err = client.CreateBucket(bucketNameTest)
  893. c.Assert(err, IsNil)
  894. // delete not set
  895. err = client.DeleteBucketCORS(bucketNameTest)
  896. c.Assert(err, IsNil)
  897. // set
  898. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule})
  899. c.Assert(err, IsNil)
  900. time.Sleep(5 * time.Second)
  901. _, err = client.GetBucketCORS(bucketNameTest)
  902. c.Assert(err, IsNil)
  903. // detele
  904. err = client.DeleteBucketCORS(bucketNameTest)
  905. c.Assert(err, IsNil)
  906. time.Sleep(5 * time.Second)
  907. _, err = client.GetBucketCORS(bucketNameTest)
  908. c.Assert(err, NotNil)
  909. // detele after delete
  910. err = client.DeleteBucketCORS(bucketNameTest)
  911. c.Assert(err, IsNil)
  912. err = client.DeleteBucket(bucketNameTest)
  913. c.Assert(err, IsNil)
  914. }
  915. // TestSetBucketCORSNegative
  916. func (s *OssClientSuite) TestSetBucketCORSNegative(c *C) {
  917. var bucketNameTest = bucketNamePrefix + "tsbcn"
  918. var rule = CORSRule{
  919. AllowedOrigin: []string{"*"},
  920. AllowedMethod: []string{"PUT", "GET", "POST"},
  921. AllowedHeader: []string{},
  922. ExposeHeader: []string{},
  923. MaxAgeSeconds: 100,
  924. }
  925. client, err := New(endpoint, accessID, accessKey)
  926. c.Assert(err, IsNil)
  927. err = client.DeleteBucket(bucketNameTest)
  928. // not exist
  929. _, err = client.GetBucketCORS(bucketNameTest)
  930. c.Assert(err, NotNil)
  931. err = client.DeleteBucketCORS(bucketNameTest)
  932. c.Assert(err, NotNil)
  933. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule})
  934. c.Assert(err, NotNil)
  935. err = client.CreateBucket(bucketNameTest)
  936. c.Assert(err, IsNil)
  937. time.Sleep(5 * time.Second)
  938. _, err = client.GetBucketCORS(bucketNameTest)
  939. c.Assert(err, NotNil)
  940. // set
  941. err = client.SetBucketCORS(bucketNameTest, []CORSRule{rule})
  942. c.Assert(err, IsNil)
  943. time.Sleep(5 * time.Second)
  944. _, err = client.GetBucketCORS(bucketNameTest)
  945. c.Assert(err, IsNil)
  946. // detele
  947. err = client.DeleteBucketCORS(bucketNameTest)
  948. c.Assert(err, IsNil)
  949. time.Sleep(5 * time.Second)
  950. _, err = client.GetBucketCORS(bucketNameTest)
  951. c.Assert(err, NotNil)
  952. // detele after delete
  953. err = client.DeleteBucketCORS(bucketNameTest)
  954. c.Assert(err, IsNil)
  955. err = client.DeleteBucket(bucketNameTest)
  956. c.Assert(err, IsNil)
  957. }
  958. // TestGetBucketInfo
  959. func (s *OssClientSuite) TestGetBucketInfo(c *C) {
  960. var bucketNameTest = bucketNamePrefix + "tgbi"
  961. client, err := New(endpoint, accessID, accessKey)
  962. c.Assert(err, IsNil)
  963. err = client.CreateBucket(bucketNameTest)
  964. c.Assert(err, IsNil)
  965. res, err := client.GetBucketInfo(bucketNameTest)
  966. c.Assert(err, IsNil)
  967. c.Assert(res.BucketInfo.Name, Equals, bucketNameTest)
  968. c.Assert(strings.HasPrefix(res.BucketInfo.Location, "oss-"), Equals, true)
  969. c.Assert(res.BucketInfo.ACL, Equals, "private")
  970. c.Assert(strings.HasSuffix(res.BucketInfo.ExtranetEndpoint, ".com"), Equals, true)
  971. c.Assert(strings.HasSuffix(res.BucketInfo.IntranetEndpoint, ".com"), Equals, true)
  972. c.Assert(res.BucketInfo.CreationDate, NotNil)
  973. err = client.DeleteBucket(bucketNameTest)
  974. c.Assert(err, IsNil)
  975. }
  976. // TestGetBucketInfoNegative
  977. func (s *OssClientSuite) TestGetBucketInfoNegative(c *C) {
  978. var bucketNameTest = bucketNamePrefix + "tgbig"
  979. client, err := New(endpoint, accessID, accessKey)
  980. c.Assert(err, IsNil)
  981. // not exist
  982. _, err = client.GetBucketInfo(bucketNameTest)
  983. c.Assert(err, NotNil)
  984. // bucket name invalid
  985. _, err = client.GetBucketInfo("InvalidBucketName_")
  986. c.Assert(err, NotNil)
  987. }
  988. // TestEndpointFormat
  989. func (s *OssClientSuite) TestEndpointFormat(c *C) {
  990. var bucketNameTest = bucketNamePrefix + "tef"
  991. // http://host
  992. client, err := New(endpoint, accessID, accessKey)
  993. c.Assert(err, IsNil)
  994. err = client.CreateBucket(bucketNameTest)
  995. c.Assert(err, IsNil)
  996. res, err := client.GetBucketACL(bucketNameTest)
  997. c.Assert(err, IsNil)
  998. c.Assert(res.ACL, Equals, string(ACLPrivate))
  999. err = client.DeleteBucket(bucketNameTest)
  1000. c.Assert(err, IsNil)
  1001. time.Sleep(5 * time.Second)
  1002. // http://host:port
  1003. client, err = New(endpoint+":80", accessID, accessKey)
  1004. c.Assert(err, IsNil)
  1005. err = client.CreateBucket(bucketNameTest)
  1006. c.Assert(err, IsNil)
  1007. time.Sleep(5 * time.Second)
  1008. res, err = client.GetBucketACL(bucketNameTest)
  1009. c.Assert(err, IsNil)
  1010. c.Assert(res.ACL, Equals, string(ACLPrivate))
  1011. err = client.DeleteBucket(bucketNameTest)
  1012. c.Assert(err, IsNil)
  1013. }
  1014. // TestCname
  1015. func (s *OssClientSuite) _TestCname(c *C) {
  1016. var bucketNameTest = "<my-bucket-cname>"
  1017. client, err := New("<endpoint>", "<accessKeyId>", "<accessKeySecret>", UseCname(true))
  1018. c.Assert(err, IsNil)
  1019. err = client.CreateBucket(bucketNameTest)
  1020. c.Assert(err, IsNil)
  1021. _, err = client.ListBuckets()
  1022. c.Assert(err, NotNil)
  1023. res, err := client.GetBucketACL(bucketNameTest)
  1024. c.Assert(err, IsNil)
  1025. c.Assert(res.ACL, Equals, string(ACLPrivate))
  1026. }
  1027. // TestCnameNegative
  1028. func (s *OssClientSuite) _TestCnameNegative(c *C) {
  1029. var bucketNameTest = "<my-bucket-cname>"
  1030. client, err := New("<endpoint>", "<accessKeyId>", "<accessKeySecret>", UseCname(true))
  1031. c.Assert(err, IsNil)
  1032. err = client.CreateBucket(bucketNameTest)
  1033. c.Assert(err, NotNil)
  1034. _, err = client.ListBuckets()
  1035. c.Assert(err, NotNil)
  1036. _, err = client.GetBucketACL(bucketNameTest)
  1037. c.Assert(err, NotNil)
  1038. }
  1039. // _TestHTTPS
  1040. func (s *OssClientSuite) _TestHTTPS(c *C) {
  1041. var bucketNameTest = "<my-bucket-https>"
  1042. client, err := New("<endpoint>", "<accessKeyId>", "<accessKeySecret>")
  1043. c.Assert(err, IsNil)
  1044. err = client.CreateBucket(bucketNameTest)
  1045. c.Assert(err, IsNil)
  1046. res, err := client.GetBucketACL(bucketNameTest)
  1047. c.Assert(err, IsNil)
  1048. c.Assert(res.ACL, Equals, string(ACLPrivate))
  1049. err = client.DeleteBucket(bucketNameTest)
  1050. c.Assert(err, IsNil)
  1051. }
  1052. // TestClientOption
  1053. func (s *OssClientSuite) TestClientOption(c *C) {
  1054. var bucketNameTest = bucketNamePrefix + "tco"
  1055. client, err := New(endpoint, accessID, accessKey, UseCname(true),
  1056. Timeout(11, 12), SecurityToken("token"), Proxy(proxyHost))
  1057. c.Assert(err, IsNil)
  1058. // Create Bucket timeout
  1059. err = client.CreateBucket(bucketNameTest)
  1060. c.Assert(err, NotNil)
  1061. c.Assert(client.Conn.config.HTTPTimeout.ConnectTimeout, Equals, time.Second*11)
  1062. c.Assert(client.Conn.config.HTTPTimeout.ReadWriteTimeout, Equals, time.Second*12)
  1063. c.Assert(client.Conn.config.HTTPTimeout.HeaderTimeout, Equals, time.Second*12)
  1064. c.Assert(client.Conn.config.HTTPTimeout.LongTimeout, Equals, time.Second*12*10)
  1065. c.Assert(client.Conn.config.SecurityToken, Equals, "token")
  1066. c.Assert(client.Conn.config.IsCname, Equals, true)
  1067. c.Assert(client.Conn.config.IsUseProxy, Equals, true)
  1068. c.Assert(client.Config.ProxyHost, Equals, proxyHost)
  1069. client, err = New(endpoint, accessID, accessKey, AuthProxy(proxyHost, proxyUser, proxyPasswd))
  1070. c.Assert(client.Conn.config.IsUseProxy, Equals, true)
  1071. c.Assert(client.Config.ProxyHost, Equals, proxyHost)
  1072. c.Assert(client.Conn.config.IsAuthProxy, Equals, true)
  1073. c.Assert(client.Conn.config.ProxyUser, Equals, proxyUser)
  1074. c.Assert(client.Conn.config.ProxyPassword, Equals, proxyPasswd)
  1075. client, err = New(endpoint, accessID, accessKey, UserAgent("go sdk user agent"))
  1076. c.Assert(client.Conn.config.UserAgent, Equals, "go sdk user agent")
  1077. }
  1078. // TestProxy
  1079. func (s *OssClientSuite) TestProxy(c *C) {
  1080. bucketNameTest := bucketNamePrefix + "tp"
  1081. objectName := "体育/奥运/首金"
  1082. objectValue := "大江东去,浪淘尽,千古风流人物。 故垒西边,人道是、三国周郎赤壁。"
  1083. client, err := New(endpoint, accessID, accessKey, AuthProxy(proxyHost, proxyUser, proxyPasswd))
  1084. // Create bucket
  1085. err = client.CreateBucket(bucketNameTest)
  1086. c.Assert(err, IsNil)
  1087. // Get bucket info
  1088. _, err = client.GetBucketInfo(bucketNameTest)
  1089. c.Assert(err, IsNil)
  1090. bucket, err := client.Bucket(bucketNameTest)
  1091. // Put object
  1092. err = bucket.PutObject(objectName, strings.NewReader(objectValue))
  1093. c.Assert(err, IsNil)
  1094. // Get Object
  1095. _, err = bucket.GetObject(objectName)
  1096. c.Assert(err, IsNil)
  1097. // List Objects
  1098. _, err = bucket.ListObjects()
  1099. c.Assert(err, IsNil)
  1100. // Delete Object
  1101. err = bucket.DeleteObject(objectName)
  1102. c.Assert(err, IsNil)
  1103. // Delete bucket
  1104. err = client.DeleteBucket(bucketNameTest)
  1105. c.Assert(err, IsNil)
  1106. }
  1107. // private
  1108. func (s *OssClientSuite) checkBucket(buckets []BucketProperties, bucket string) bool {
  1109. for _, v := range buckets {
  1110. if v.Name == bucket {
  1111. return true
  1112. }
  1113. }
  1114. return false
  1115. }
  1116. func (s *OssClientSuite) getBucket(buckets []BucketProperties, bucket string) (bool, BucketProperties) {
  1117. for _, v := range buckets {
  1118. if v.Name == bucket {
  1119. return true, v
  1120. }
  1121. }
  1122. return false, BucketProperties{}
  1123. }