@@ -4,6 +4,7 @@ const { S3 } = require('aws-sdk');
44
55const getConfig = require ( '../support/config' ) ;
66const BucketUtility = require ( '../../lib/utility/bucket-util' ) ;
7+ const { config } = require ( '../../../../../lib/Config' ) ;
78
89const MAX_DAYS = 2147483647 ; // Max 32-bit signed binary integer.
910
@@ -483,7 +484,10 @@ describe('aws-sdk test put bucket lifecycle', () => {
483484 } ) ;
484485 } ) ;
485486
486- describe ( 'with Transitions' , ( ) => {
487+ // use env S3_CONFIG_FILE with tests (needed in S3C Integration tests)
488+ const isTransitionSupported = config . supportedLifecycleRules . includes ( 'Transition' ) ;
489+ describe ( `with Transitions ${ isTransitionSupported ? '' : 'NOT ' } supported` , ( ) => {
490+
487491 // Get lifecycle request params with Transitions.
488492 function getParams ( transitions ) {
489493 const rule = {
@@ -498,14 +502,18 @@ describe('aws-sdk test put bucket lifecycle', () => {
498502 } ;
499503 }
500504
501- it ( ' should allow Days' , done => {
505+ it ( ` should ${ isTransitionSupported ? '' : 'NOT ' } allow Days` , done => {
502506 const transitions = [ {
503507 Days : 0 ,
504508 StorageClass : 'us-east-2' ,
505509 } ] ;
506510 const params = getParams ( transitions ) ;
507511 s3 . putBucketLifecycleConfiguration ( params , err => {
508- assert . ifError ( err ) ;
512+ if ( isTransitionSupported ) {
513+ assert . ifError ( err ) ;
514+ } else {
515+ assert . strictEqual ( err && err . code , 'NotImplemented' ) ;
516+ }
509517 done ( ) ;
510518 } ) ;
511519 } ) ;
@@ -517,7 +525,11 @@ describe('aws-sdk test put bucket lifecycle', () => {
517525 } ] ;
518526 const params = getParams ( transitions ) ;
519527 s3 . putBucketLifecycleConfiguration ( params , err => {
520- assert . strictEqual ( err . code , 'MalformedXML' ) ;
528+ if ( isTransitionSupported ) {
529+ assert . strictEqual ( err . code , 'MalformedXML' ) ;
530+ } else {
531+ assert . strictEqual ( err . code , 'NotImplemented' ) ;
532+ }
521533 done ( ) ;
522534 } ) ;
523535 } ) ;
@@ -529,9 +541,13 @@ describe('aws-sdk test put bucket lifecycle', () => {
529541 } ] ;
530542 const params = getParams ( transitions ) ;
531543 s3 . putBucketLifecycleConfiguration ( params , err => {
532- assert . strictEqual ( err . code , 'InvalidArgument' ) ;
533- assert . strictEqual ( err . message ,
534- "'Days' in Transition action must be nonnegative" ) ;
544+ if ( isTransitionSupported ) {
545+ assert . strictEqual ( err . code , 'InvalidArgument' ) ;
546+ assert . strictEqual ( err . message ,
547+ "'Days' in Transition action must be nonnegative" ) ;
548+ } else {
549+ assert . strictEqual ( err . code , 'NotImplemented' ) ;
550+ }
535551 done ( ) ;
536552 } ) ;
537553 } ) ;
@@ -546,23 +562,31 @@ describe('aws-sdk test put bucket lifecycle', () => {
546562 } ] ;
547563 const params = getParams ( transitions ) ;
548564 s3 . putBucketLifecycleConfiguration ( params , err => {
549- assert . strictEqual ( err . code , 'InvalidRequest' ) ;
550- assert . strictEqual ( err . message ,
551- "'StorageClass' must be different for 'Transition' " +
552- "actions in same 'Rule' with prefix ''" ) ;
565+ if ( isTransitionSupported ) {
566+ assert . strictEqual ( err . code , 'InvalidRequest' ) ;
567+ assert . strictEqual ( err . message ,
568+ "'StorageClass' must be different for 'Transition' " +
569+ "actions in same 'Rule' with prefix ''" ) ;
570+ } else {
571+ assert . strictEqual ( err . code , 'NotImplemented' ) ;
572+ }
553573 done ( ) ;
554574 } ) ;
555575 } ) ;
556576
557577 // TODO: Upgrade to aws-sdk >= 2.60.0 for correct Date field support
558- it . skip ( ' should allow Date' , done => {
578+ it . skip ( ` should ${ isTransitionSupported ? '' : 'NOT ' } allow Date` , done => {
559579 const transitions = [ {
560580 Date : '2016-01-01T00:00:00.000Z' ,
561581 StorageClass : 'us-east-2' ,
562582 } ] ;
563583 const params = getParams ( transitions ) ;
564584 s3 . putBucketLifecycleConfiguration ( params , err => {
565- assert . ifError ( err ) ;
585+ if ( isTransitionSupported ) {
586+ assert . ifError ( err ) ;
587+ } else {
588+ assert . strictEqual ( err . code , 'NotImplemented' ) ;
589+ }
566590 done ( ) ;
567591 } ) ;
568592 } ) ;
@@ -577,7 +601,11 @@ describe('aws-sdk test put bucket lifecycle', () => {
577601 } ] ;
578602 const params = getParams ( transitions ) ;
579603 s3 . putBucketLifecycleConfiguration ( params , err => {
580- assert . strictEqual ( err . code , 'MalformedXML' ) ;
604+ if ( isTransitionSupported ) {
605+ assert . strictEqual ( err . code , 'MalformedXML' ) ;
606+ } else {
607+ assert . strictEqual ( err . code , 'NotImplemented' ) ;
608+ }
581609 done ( ) ;
582610 } ) ;
583611 } ) ;
@@ -594,10 +622,14 @@ describe('aws-sdk test put bucket lifecycle', () => {
594622 } ] ;
595623 const params = getParams ( transitions ) ;
596624 s3 . putBucketLifecycleConfiguration ( params , err => {
597- assert . strictEqual ( err . code , 'InvalidRequest' ) ;
598- assert . strictEqual ( err . message ,
599- "Found mixed 'Date' and 'Days' based Transition " +
600- "actions in lifecycle rule for prefix ''" ) ;
625+ if ( isTransitionSupported ) {
626+ assert . strictEqual ( err . code , 'InvalidRequest' ) ;
627+ assert . strictEqual ( err . message ,
628+ "Found mixed 'Date' and 'Days' based Transition " +
629+ "actions in lifecycle rule for prefix ''" ) ;
630+ } else {
631+ assert . strictEqual ( err . code , 'NotImplemented' ) ;
632+ }
601633 done ( ) ;
602634 } ) ;
603635 } ) ;
@@ -612,10 +644,14 @@ describe('aws-sdk test put bucket lifecycle', () => {
612644 const params = getParams ( transitions ) ;
613645 params . LifecycleConfiguration . Rules [ 0 ] . Expiration = { Date : 0 } ;
614646 s3 . putBucketLifecycleConfiguration ( params , err => {
615- assert . strictEqual ( err . code , 'InvalidRequest' ) ;
616- assert . strictEqual ( err . message ,
617- "Found mixed 'Date' and 'Days' based Expiration and " +
618- "Transition actions in lifecycle rule for prefix ''" ) ;
647+ if ( isTransitionSupported ) {
648+ assert . strictEqual ( err . code , 'InvalidRequest' ) ;
649+ assert . strictEqual ( err . message ,
650+ "Found mixed 'Date' and 'Days' based Expiration and " +
651+ "Transition actions in lifecycle rule for prefix ''" ) ;
652+ } else {
653+ assert . strictEqual ( err . code , 'NotImplemented' ) ;
654+ }
619655 done ( ) ;
620656 } ) ;
621657 } ) ;
0 commit comments