@@ -15,7 +15,7 @@ const { makeRequest } = require('../raw-node/utils/makeRequest');
1515const { config } = require ( '../../../lib/Config' ) ;
1616const { getKeyIdFromArn, isScalityKmsArn } = require ( 'arsenal/build/lib/network/KMSInterface' ) ;
1717const helpers = require ( './helpers' ) ;
18-
18+ const scenarios = require ( './scenarios' ) ;
1919// use file to defined key in arn prefix, if no prefix mem is used
2020
2121// copy part of aws-node-sdk/test/object/encryptionHeaders.js and add more tests
@@ -207,67 +207,26 @@ describe('SSE KMS arnPrefix', () => {
207207 } ) ;
208208
209209 if ( bktConf . deleteSSE ) {
210- beforeEach ( async ( ) => {
211- const bucketMD = await helpers . MD . getBucket ( bkt . name , log ) ;
212- if ( bucketMD . getServerSideEncryption ( ) ) {
213- bucketMD . setServerSideEncryption ( null ) ;
214- void await helpers . MD . updateBucket ( bucketMD . getName ( ) , bucketMD , log ) ;
215- }
216- } ) ;
210+ beforeEach ( async ( ) => scenarios . deleteBucketSSEBeforeEach ( bkt . name , log ) ) ;
217211 }
218212
219213 if ( ! bktConf . algo ) {
220- it ( 'GetBucketEncryption should return ServerSideEncryptionConfigurationNotFoundError' , async ( ) => {
221- void await assert . rejects ( helpers . s3 . getBucketEncryption ( { Bucket : bkt . name } ) . promise ( ) , err => {
222- assert . strictEqual ( err . code , 'ServerSideEncryptionConfigurationNotFoundError' ) ;
223- return true ;
224- } ) ;
225- } ) ;
214+ it ( 'GetBucketEncryption should return ServerSideEncryptionConfigurationNotFoundError' ,
215+ async ( ) => await scenarios . tests . getBucketSSEError ( bkt . name ) ) ;
226216
227217 if ( ! bktConf . deleteSSE ) {
228- it ( 'should have non mandatory SSE in bucket MD as test init put an object with AES256' , async ( ) => {
229- const bucketMD = await helpers . MD . getBucket ( bkt . name , log ) ;
230- const sseMD = bucketMD . getServerSideEncryption ( ) ;
231- assert . strictEqual ( sseMD . mandatory , false ) ;
232- assert . strictEqual ( sseMD . algorithm , 'AES256' ) ;
233- assert . match ( sseMD . masterKeyId , new RegExp ( kms . arnPrefix ) ) ;
234- } ) ;
218+ it ( 'should have non mandatory SSE in bucket MD as test init put an object with AES256' ,
219+ async ( ) => await scenarios . tests . getBucketNonMandatorySSE ( bkt . name , log , 'after' ) ) ;
235220 }
236221 } else {
237- it ( 'GetBucketEncryption should return SSE with arnPrefix to key' , async ( ) => {
238- // bucket already has SSE from initBucket function
239- const sseS3 = await helpers . s3 . getBucketEncryption ( { Bucket : bkt . name } ) . promise ( ) ;
240-
241- const { SSEAlgorithm, KMSMasterKeyID } = sseS3
242- . ServerSideEncryptionConfiguration . Rules [ 0 ] . ApplyServerSideEncryptionByDefault ;
243-
244- // Compare bucketMD as well to make sure key is stored with arn
245- const bucketMD = await helpers . MD . getBucket ( bkt . name , log ) ;
246- const sseMD = bucketMD . getServerSideEncryption ( ) ;
247-
248- assert . strictEqual ( SSEAlgorithm , bktConf . algo ) ;
249- assert . strictEqual ( sseMD . algorithm , bktConf . algo ) ;
250- if ( ! bktConf . masterKeyId ) {
251- // AES256 or aws:kms without keyId
252- assert . match ( sseMD . masterKeyId , arnPrefixReg ) ;
253- }
254- if ( bktConf . masterKeyId ) {
255- // arn prefixed even if not prefixed in input
256- assert . strictEqual ( sseMD . configuredMasterKeyId , bkt . kmsKeyInfo . masterKeyArn ) ;
257- assert . strictEqual ( KMSMasterKeyID , helpers . getKey ( bkt . kmsKeyInfo . masterKeyArn ) ) ;
258- }
259- } ) ;
222+ it ( 'GetBucketEncryption should return SSE with arnPrefix to key' ,
223+ async ( ) => await scenarios . tests . getBucketSSE ( bkt . name , log , bktConf . algo ,
224+ bktConf . masterKeyId ? bkt . kmsKeyInfo . masterKeyArn : null , 'after' ) ) ;
260225 }
261226
262- testCasesObj . forEach ( objConf => it ( `should assert uploaded objects with SSE ${ objConf . name } ` , async ( ) => {
263- const obj = bkt . objs [ objConf . name ] ;
264- const assertion = {
265- Bucket : bkt . name ,
266- Key : obj . name ,
267- Body : obj . body ,
268- } ;
269- void await assertObjectSSE ( assertion , { objConf, obj } , { bktConf, bkt } ) ;
270- } ) ) ;
227+ testCasesObj . forEach ( objConf => it ( `should assert uploaded objects with SSE ${ objConf . name } ` ,
228+ async ( ) => scenarios . tests . getPreUploadedObject ( bkt . name ,
229+ { objConf, obj : bkt . objs [ objConf . name ] } , { bktConf, bkt } ) ) ) ;
271230
272231 testCasesObj . forEach ( objConf => describe ( `object enc-obj-${ objConf . name } ` , ( ) => {
273232 const obj = {
@@ -289,15 +248,8 @@ describe('SSE KMS arnPrefix', () => {
289248 objForCopy = bkt . objs [ objConf . name ] ;
290249 } ) ;
291250
292- it ( `should PutObject ${ obj . name } overriding bucket SSE` , async ( ) => {
293- void await helpers . putEncryptedObject ( bkt . name , obj . name , objConf , obj . kmsKey , obj . body ) ;
294- const assertion = {
295- Bucket : bkt . name ,
296- Key : obj . name ,
297- Body : obj . body ,
298- } ;
299- void await assertObjectSSE ( assertion , { objConf, obj } , { bktConf, bkt } ) ;
300- } ) ;
251+ it ( `should PutObject ${ obj . name } overriding bucket SSE` ,
252+ async ( ) => scenarios . tests . putObjectOverrideSSE ( { objConf, obj } , { bktConf, bkt } ) ) ;
301253
302254 // CopyObject scenarios
303255 [
0 commit comments