Skip to content

Commit 655fca4

Browse files
CLDSRV-717: Test lifecycle Transition condition
For S3C Integration that don't support Transition
1 parent 4e8b7f6 commit 655fca4

1 file changed

Lines changed: 58 additions & 22 deletions

File tree

tests/functional/aws-node-sdk/test/bucket/putBucketLifecycle.js

Lines changed: 58 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const { S3 } = require('aws-sdk');
44

55
const getConfig = require('../support/config');
66
const BucketUtility = require('../../lib/utility/bucket-util');
7+
const { config } = require('../../../../../lib/Config');
78

89
const 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

Comments
 (0)