@@ -251,17 +251,10 @@ describe('test/bucket.test.js', () => {
251
251
} ) ;
252
252
253
253
describe ( 'putBucketWebsite(), getBucketWebsite(), deleteBucketWebsite()' , ( ) => {
254
- it ( 'should create, get and delete the website settings' , async ( ) => {
255
- const result1 = await store . putBucketWebsite ( bucket , {
254
+ it ( 'should get and delete the website settings' , async ( ) => {
255
+ await store . putBucketWebsite ( bucket , {
256
256
index : 'index.html'
257
257
} ) ;
258
- assert . equal ( result1 . res . status , 200 ) ;
259
- // put again will be fine
260
- const result2 = await store . putBucketWebsite ( bucket , {
261
- index : 'index.htm' ,
262
- error : 'error.htm'
263
- } ) ;
264
- assert . equal ( result2 . res . status , 200 ) ;
265
258
266
259
await utils . sleep ( ms ( metaSyncTime ) ) ;
267
260
@@ -274,6 +267,112 @@ describe('test/bucket.test.js', () => {
274
267
const del = await store . deleteBucketWebsite ( bucket ) ;
275
268
assert . equal ( del . res . status , 204 ) ;
276
269
} ) ;
270
+
271
+ it ( 'should create when RoutingRules is Array or Object' , async ( ) => {
272
+ const routingRule1 = {
273
+ RuleNumber : '1' ,
274
+ Condition : {
275
+ KeyPrefixEquals : 'abc/' ,
276
+ HttpErrorCodeReturnedEquals : '404'
277
+ } ,
278
+ Redirect : {
279
+ RedirectType : 'Mirror' ,
280
+ MirrorUsingRole : 'false' ,
281
+ MirrorUserLastModified : 'false' ,
282
+ PassQueryString : 'true' ,
283
+ MirrorIsExpressTunnel : 'false' ,
284
+ MirrorPassOriginalSlashes : 'false' ,
285
+ MirrorAllowHeadObject : 'false' ,
286
+ MirrorURL : 'http://www.test.com/' ,
287
+ MirrorPassQueryString : 'true' ,
288
+ MirrorFollowRedirect : 'true' ,
289
+ MirrorCheckMd5 : 'true' ,
290
+ MirrorHeaders : {
291
+ PassAll : 'true' ,
292
+ Pass : [ 'myheader-key1' , 'myheader-key2' ] ,
293
+ Remove : [ 'remove1' , 'remove2' ] ,
294
+ Set : {
295
+ Key : 'myheader-key5' ,
296
+ Value : 'myheader-value5'
297
+ }
298
+ }
299
+ }
300
+ } ;
301
+ const routingRules = [
302
+ {
303
+ RuleNumber : '2' ,
304
+ Condition : {
305
+ KeyPrefixEquals : 'a1bc/' ,
306
+ HttpErrorCodeReturnedEquals : '404'
307
+ } ,
308
+ Redirect : {
309
+ RedirectType : 'Mirror' ,
310
+ MirrorUsingRole : 'false' ,
311
+ MirrorUserLastModified : 'false' ,
312
+ MirrorAllowHeadObject : 'false' ,
313
+ MirrorIsExpressTunnel : 'false' ,
314
+ MirrorPassOriginalSlashes : 'false' ,
315
+ PassQueryString : 'true' ,
316
+ MirrorURL : 'http://www.test1.com/' ,
317
+ MirrorPassQueryString : 'true' ,
318
+ MirrorFollowRedirect : 'true' ,
319
+ MirrorCheckMd5 : 'true' ,
320
+ MirrorHeaders : {
321
+ PassAll : 'true' ,
322
+ Pass : [ 'myheader-key12' , 'myheader-key22' ] ,
323
+ Remove : [ 'remove1' , 'remove2' ] ,
324
+ Set : {
325
+ Key : 'myheader-key5' ,
326
+ Value : 'myheader-value5'
327
+ }
328
+ }
329
+ }
330
+ } ] ;
331
+ const website = {
332
+ index : 'index1.html' ,
333
+ supportSubDir : 'true' ,
334
+ type : '1' ,
335
+ error : 'error1.html' ,
336
+ routingRules
337
+ } ;
338
+
339
+ const result1 = await store . putBucketWebsite ( bucket , website ) ;
340
+ assert . strictEqual ( result1 . res . status , 200 ) ;
341
+ const rules1 = await store . getBucketWebsite ( bucket ) ;
342
+ assert . deepStrictEqual ( rules1 . routingRules , routingRules ) ;
343
+ assert . strictEqual ( rules1 . supportSubDir , website . supportSubDir ) ;
344
+ assert . strictEqual ( rules1 . type , website . type ) ;
345
+
346
+ website . routingRules = [ routingRule1 ] ;
347
+ const result2 = await store . putBucketWebsite ( bucket , website ) ;
348
+ assert . strictEqual ( result2 . res . status , 200 ) ;
349
+ const rules2 = await store . getBucketWebsite ( bucket ) ;
350
+ assert . deepStrictEqual ( rules2 . routingRules , website . routingRules ) ;
351
+ } ) ;
352
+
353
+ it ( 'should throw error when RoutingRules is not Array' , async ( ) => {
354
+ const website = {
355
+ index : 'index1.html' ,
356
+ supportSubDir : 'true' ,
357
+ type : '1' ,
358
+ error : 'error1.html' ,
359
+ routingRules : ''
360
+ } ;
361
+
362
+ try {
363
+ await store . putBucketWebsite ( bucket , website ) ;
364
+ assert ( false ) ;
365
+ } catch ( error ) {
366
+ assert . strictEqual ( error . message , 'RoutingRules must be Array' ) ;
367
+ }
368
+ try {
369
+ website . RoutingRules = 0 ;
370
+ await store . putBucketWebsite ( bucket , website ) ;
371
+ assert ( false ) ;
372
+ } catch ( error ) {
373
+ assert . strictEqual ( error . message , 'RoutingRules must be Array' ) ;
374
+ }
375
+ } ) ;
277
376
} ) ;
278
377
279
378
describe ( 'putBucketLifecycle(), getBucketLifecycle(), deleteBucketLifecycle()' , ( ) => {
0 commit comments