@@ -29,27 +29,24 @@ describe('ReplicationStatusUpdater', () => {
2929 crr . run ( err => {
3030 assert . ifError ( err ) ;
3131
32- // Verify AWS SDK v3 send method was called
3332 expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ; // One for list, one for getBucketReplication
33+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
34+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } ) ,
35+ input : expect . objectContaining ( {
36+ Bucket : 'bucket0' ,
37+ MaxKeys : 10 ,
38+ Prefix : 'toto' ,
39+ VersionIdMarker : null ,
40+ KeyMarker : null ,
41+ } )
42+ } ) ) ;
3443
35- // Verify the commands were created with correct parameters
36- const sendCalls = crr . s3 . send . mock . calls ;
37- const listCommand = sendCalls . find ( call =>
38- call [ 0 ] . constructor . name === 'ListObjectVersionsCommand'
39- ) ;
40- const replicationCommand = sendCalls . find ( call =>
41- call [ 0 ] . constructor . name === 'GetBucketReplicationCommand'
42- ) ;
43-
44- expect ( listCommand ) . toBeDefined ( ) ;
45- expect ( listCommand [ 0 ] . input . Bucket ) . toBe ( 'bucket0' ) ;
46- expect ( listCommand [ 0 ] . input . MaxKeys ) . toBe ( 10 ) ;
47- expect ( listCommand [ 0 ] . input . Prefix ) . toBe ( 'toto' ) ;
48- expect ( listCommand [ 0 ] . input . VersionIdMarker ) . toBeUndefined ( ) ;
49- expect ( listCommand [ 0 ] . input . KeyMarker ) . toBeUndefined ( ) ;
50-
51- expect ( replicationCommand ) . toBeDefined ( ) ;
52- expect ( replicationCommand [ 0 ] . input . Bucket ) . toBe ( 'bucket0' ) ;
44+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 2 , expect . objectContaining ( {
45+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } ) ,
46+ input : expect . objectContaining ( {
47+ Bucket : 'bucket0'
48+ } )
49+ } ) ) ;
5350
5451 expect ( crr . bb . getMetadata ) . toHaveBeenCalledTimes ( 1 ) ;
5552 expect ( crr . bb . getMetadata ) . toHaveBeenCalledWith ( {
@@ -91,7 +88,6 @@ describe('ReplicationStatusUpdater', () => {
9188 } ) ;
9289
9390 it ( 'should process bucket for CRR with multiple objects' , done => {
94- // Create a new instance with custom response for multiple objects
9591 crr = initializeCrrWithMocks ( {
9692 buckets : [ 'bucket0' ] ,
9793 workers : 10 ,
@@ -100,33 +96,30 @@ describe('ReplicationStatusUpdater', () => {
10096 listingLimit : 10 ,
10197 siteName : 'aws-location' ,
10298 } , logger , {
103- ListObjectVersionsCommand : listVersionsRes ,
99+ ListObjectVersionsCommand : listVersionsRes , // Use custom response for list object versions
104100 } ) ;
105101
106102 crr . run ( err => {
107103 assert . ifError ( err ) ;
108104
109- // Verify AWS SDK v3 send method was called
110- expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ; // One for list, one for getBucketReplication
105+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ;
106+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
107+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } ) ,
108+ input : expect . objectContaining ( {
109+ Bucket : 'bucket0' ,
110+ MaxKeys : 10 ,
111+ Prefix : 'toto' ,
112+ VersionIdMarker : null ,
113+ KeyMarker : null ,
114+ } )
115+ } ) ) ;
111116
112- // Verify the commands were created with correct parameters
113- const sendCalls = crr . s3 . send . mock . calls ;
114- const listCommand = sendCalls . find ( call =>
115- call [ 0 ] . constructor . name === 'ListObjectVersionsCommand'
116- ) ;
117- const replicationCommand = sendCalls . find ( call =>
118- call [ 0 ] . constructor . name === 'GetBucketReplicationCommand'
119- ) ;
120-
121- expect ( listCommand ) . toBeDefined ( ) ;
122- expect ( listCommand [ 0 ] . input . Bucket ) . toBe ( 'bucket0' ) ;
123- expect ( listCommand [ 0 ] . input . MaxKeys ) . toBe ( 10 ) ;
124- expect ( listCommand [ 0 ] . input . Prefix ) . toBe ( 'toto' ) ;
125- expect ( listCommand [ 0 ] . input . VersionIdMarker ) . toBeUndefined ( ) ;
126- expect ( listCommand [ 0 ] . input . KeyMarker ) . toBeUndefined ( ) ;
127-
128- expect ( replicationCommand ) . toBeDefined ( ) ;
129- expect ( replicationCommand [ 0 ] . input . Bucket ) . toBe ( 'bucket0' ) ;
117+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 2 , expect . objectContaining ( {
118+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } ) ,
119+ input : expect . objectContaining ( {
120+ Bucket : 'bucket0'
121+ } )
122+ } ) ) ;
130123
131124 expect ( crr . bb . getMetadata ) . toHaveBeenCalledTimes ( 2 ) ;
132125 expect ( crr . bb . getMetadata ) . toHaveBeenNthCalledWith ( 1 , {
@@ -377,8 +370,25 @@ describe('ReplicationStatusUpdater', () => {
377370 crr . run ( err => {
378371 assert . ifError ( err ) ;
379372
380- expect ( crr . s3 . listObjectVersions ) . toHaveBeenCalledTimes ( 1 ) ;
381- expect ( crr . s3 . getBucketReplication ) . toHaveBeenCalledTimes ( 1 ) ;
373+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ;
374+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
375+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } ) ,
376+ input : expect . objectContaining ( {
377+ Bucket : 'bucket0' ,
378+ MaxKeys : 10 ,
379+ Prefix : 'toto' ,
380+ VersionIdMarker : null ,
381+ KeyMarker : null ,
382+ } )
383+ } ) ) ;
384+
385+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 2 , expect . objectContaining ( {
386+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } ) ,
387+ input : expect . objectContaining ( {
388+ Bucket : 'bucket0'
389+ } )
390+ } ) ) ;
391+
382392 expect ( crr . bb . getMetadata ) . toHaveBeenCalledTimes ( 1 ) ;
383393 expect ( crr . bb . putMetadata ) . toHaveBeenCalledTimes ( 1 ) ;
384394 expect ( crr . bb . putMetadata ) . toHaveBeenCalledWith (
@@ -405,15 +415,21 @@ describe('ReplicationStatusUpdater with specifics', () => {
405415 workers : 10 ,
406416 replicationStatusToProcess : [ 'NEW' ] ,
407417 maxUpdates : 1 ,
408- } , logger ) ;
409-
410- crr . s3 . listObjectVersions = jest . fn ( ( params , cb ) => cb ( null , listVersionWithMarkerRes ) ) ;
418+ } , logger , {
419+ ListObjectVersionsCommand : listVersionWithMarkerRes ,
420+ } ) ;
411421
412422 crr . run ( err => {
413423 assert . ifError ( err ) ;
414424
415- expect ( crr . s3 . listObjectVersions ) . toHaveBeenCalledTimes ( 1 ) ;
416- expect ( crr . s3 . getBucketReplication ) . toHaveBeenCalledTimes ( 1 ) ;
425+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ;
426+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
427+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } )
428+ } ) ) ;
429+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 2 , expect . objectContaining ( {
430+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } )
431+ } ) ) ;
432+
417433 expect ( crr . bb . getMetadata ) . toHaveBeenCalledTimes ( 1 ) ;
418434 expect ( crr . bb . putMetadata ) . toHaveBeenCalledTimes ( 1 ) ;
419435
@@ -431,32 +447,39 @@ describe('ReplicationStatusUpdater with specifics', () => {
431447 workers : 10 ,
432448 replicationStatusToProcess : [ 'NEW' ] ,
433449 maxUpdates : 2 ,
434- } , logger ) ;
435-
436- crr . s3 . listObjectVersions = jest . fn ( ( params , cb ) => cb ( null , listVersionWithMarkerRes ) ) ;
450+ } , logger , {
451+ ListObjectVersionsCommand : listVersionWithMarkerRes ,
452+ } ) ;
437453
438454 crr . run ( err => {
439455 assert . ifError ( err ) ;
440456
441- expect ( crr . s3 . listObjectVersions ) . toHaveBeenCalledTimes ( 2 ) ;
457+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 4 ) ;
458+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
459+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } ) ,
460+ input : expect . objectContaining ( {
461+ Bucket : 'bucket0' ,
462+ Prefix : undefined ,
463+ MaxKeys : undefined ,
464+ KeyMarker : null ,
465+ VersionIdMarker : null ,
466+ } )
467+ } ) ) ;
468+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 2 , expect . objectContaining ( {
469+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } )
470+ } ) ) ;
471+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 3 , expect . objectContaining ( {
472+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } ) ,
473+ input : expect . objectContaining ( {
474+ Bucket : 'bucket0' ,
475+ KeyMarker : 'key0' ,
476+ VersionIdMarker : 'aJdO148N3LjN00000000001I4j3QKItW'
477+ } )
478+ } ) ) ;
479+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 4 , expect . objectContaining ( {
480+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } )
481+ } ) ) ;
442482
443- expect ( crr . s3 . listObjectVersions ) . toHaveBeenNthCalledWith ( 1 , {
444- Bucket : 'bucket0' ,
445- Prefix : undefined ,
446- MaxKeys : undefined ,
447- KeyMarker : null ,
448- VersionIdMarker : null ,
449- } , expect . any ( Function ) ) ;
450-
451- expect ( crr . s3 . listObjectVersions ) . toHaveBeenNthCalledWith ( 2 , {
452- Bucket : 'bucket0' ,
453- Prefix : undefined ,
454- MaxKeys : undefined ,
455- KeyMarker : 'key0' ,
456- VersionIdMarker : 'aJdO148N3LjN00000000001I4j3QKItW' ,
457- } , expect . any ( Function ) ) ;
458-
459- expect ( crr . s3 . getBucketReplication ) . toHaveBeenCalledTimes ( 2 ) ;
460483 expect ( crr . bb . getMetadata ) . toHaveBeenCalledTimes ( 2 ) ;
461484 expect ( crr . bb . putMetadata ) . toHaveBeenCalledTimes ( 2 ) ;
462485
@@ -474,15 +497,24 @@ describe('ReplicationStatusUpdater with specifics', () => {
474497 workers : 10 ,
475498 replicationStatusToProcess : [ 'NEW' ] ,
476499 maxScanned : 1 ,
477- } , logger ) ;
478-
479- crr . s3 . listObjectVersions = jest . fn ( ( params , cb ) => cb ( null , listVersionWithMarkerRes ) ) ;
500+ } , logger , {
501+ ListObjectVersionsCommand : listVersionWithMarkerRes ,
502+ } ) ;
480503
481504 crr . run ( err => {
482505 assert . ifError ( err ) ;
483506
484- expect ( crr . s3 . listObjectVersions ) . toHaveBeenCalledTimes ( 1 ) ;
485- expect ( crr . s3 . getBucketReplication ) . toHaveBeenCalledTimes ( 1 ) ;
507+ // Verify AWS SDK v3 send method was called
508+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ; // One for list, one for getBucketReplication
509+
510+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
511+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } )
512+ } ) ) ;
513+
514+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 2 , expect . objectContaining ( {
515+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } )
516+ } ) ) ;
517+
486518 expect ( crr . bb . getMetadata ) . toHaveBeenCalledTimes ( 1 ) ;
487519 expect ( crr . bb . putMetadata ) . toHaveBeenCalledTimes ( 1 ) ;
488520
@@ -505,14 +537,16 @@ describe('ReplicationStatusUpdater with specifics', () => {
505537 crr . run ( err => {
506538 assert . ifError ( err ) ;
507539
508- expect ( crr . s3 . listObjectVersions ) . toHaveBeenCalledTimes ( 1 ) ;
509- expect ( crr . s3 . listObjectVersions ) . toHaveBeenNthCalledWith ( 1 , {
510- Bucket : 'bucket0' ,
511- Prefix : undefined ,
512- MaxKeys : undefined ,
513- KeyMarker : 'key1' ,
514- VersionIdMarker : undefined ,
515- } , expect . any ( Function ) ) ;
540+ // Verify AWS SDK v3 send method was called
541+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ; // One for list, one for getBucketReplication
542+
543+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
544+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } ) ,
545+ input : expect . objectContaining ( {
546+ Bucket : 'bucket0' ,
547+ KeyMarker : 'key1'
548+ } )
549+ } ) ) ;
516550
517551 done ( ) ;
518552 } ) ;
@@ -530,14 +564,17 @@ describe('ReplicationStatusUpdater with specifics', () => {
530564 crr . run ( err => {
531565 assert . ifError ( err ) ;
532566
533- expect ( crr . s3 . listObjectVersions ) . toHaveBeenCalledTimes ( 1 ) ;
534- expect ( crr . s3 . listObjectVersions ) . toHaveBeenNthCalledWith ( 1 , {
535- Bucket : 'bucket0' ,
536- Prefix : undefined ,
537- MaxKeys : undefined ,
538- KeyMarker : 'key1' ,
539- VersionIdMarker : 'vid1' ,
540- } , expect . any ( Function ) ) ;
567+ // Verify AWS SDK v3 send method was called
568+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ; // One for list, one for getBucketReplication
569+
570+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
571+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } ) ,
572+ input : expect . objectContaining ( {
573+ Bucket : 'bucket0' ,
574+ KeyMarker : 'key1' ,
575+ VersionIdMarker : 'vid1'
576+ } )
577+ } ) ) ;
541578
542579 done ( ) ;
543580 } ) ;
@@ -617,15 +654,23 @@ describe('ReplicationStatusUpdater with currentVersionOnly', () => {
617654 workers : 10 ,
618655 replicationStatusToProcess : [ 'NEW' ] ,
619656 currentVersionOnly : true ,
620- } , logger ) ;
621-
622- crr . s3 . listObjectVersions = jest . fn ( ( params , cb ) => cb ( null , listVersionsWithMixedLatest ) ) ;
657+ } , logger , {
658+ ListObjectVersionsCommand : listVersionsWithMixedLatest ,
659+ } ) ;
623660
624661 crr . run ( err => {
625662 assert . ifError ( err ) ;
626663
627- expect ( crr . s3 . listObjectVersions ) . toHaveBeenCalledTimes ( 1 ) ;
628- expect ( crr . s3 . getBucketReplication ) . toHaveBeenCalledTimes ( 1 ) ;
664+ // Verify AWS SDK v3 send method was called
665+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ; // One for list, one for getBucketReplication
666+
667+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
668+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } )
669+ } ) ) ;
670+
671+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 2 , expect . objectContaining ( {
672+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } )
673+ } ) ) ;
629674
630675 expect ( crr . bb . getMetadata ) . toHaveBeenCalledTimes ( 2 ) ;
631676 expect ( crr . bb . getMetadata ) . toHaveBeenNthCalledWith ( 1 , {
@@ -693,15 +738,23 @@ describe('ReplicationStatusUpdater with currentVersionOnly', () => {
693738 workers : 10 ,
694739 replicationStatusToProcess : [ 'NEW' ] ,
695740 currentVersionOnly : false ,
696- } , logger ) ;
697-
698- crr . s3 . listObjectVersions = jest . fn ( ( params , cb ) => cb ( null , listVersionsWithMixedLatest ) ) ;
741+ } , logger , {
742+ ListObjectVersionsCommand : listVersionsWithMixedLatest ,
743+ } ) ;
699744
700745 crr . run ( err => {
701746 assert . ifError ( err ) ;
702747
703- expect ( crr . s3 . listObjectVersions ) . toHaveBeenCalledTimes ( 1 ) ;
704- expect ( crr . s3 . getBucketReplication ) . toHaveBeenCalledTimes ( 1 ) ;
748+ // Verify AWS SDK v3 send method was called
749+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ; // One for list, one for getBucketReplication
750+
751+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
752+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } )
753+ } ) ) ;
754+
755+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 2 , expect . objectContaining ( {
756+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } )
757+ } ) ) ;
705758
706759 expect ( crr . bb . getMetadata ) . toHaveBeenCalledTimes ( 2 ) ;
707760 expect ( crr . bb . putMetadata ) . toHaveBeenCalledTimes ( 2 ) ;
0 commit comments