@@ -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 ) ;
442-
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 ) ) ;
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+ } ) ) ;
458482
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,15 @@ 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+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ;
568+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
569+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } ) ,
570+ input : expect . objectContaining ( {
571+ Bucket : 'bucket0' ,
572+ KeyMarker : 'key1' ,
573+ VersionIdMarker : 'vid1'
574+ } )
575+ } ) ) ;
541576
542577 done ( ) ;
543578 } ) ;
@@ -617,15 +652,20 @@ describe('ReplicationStatusUpdater with currentVersionOnly', () => {
617652 workers : 10 ,
618653 replicationStatusToProcess : [ 'NEW' ] ,
619654 currentVersionOnly : true ,
620- } , logger ) ;
621-
622- crr . s3 . listObjectVersions = jest . fn ( ( params , cb ) => cb ( null , listVersionsWithMixedLatest ) ) ;
655+ } , logger , {
656+ ListObjectVersionsCommand : listVersionsWithMixedLatest ,
657+ } ) ;
623658
624659 crr . run ( err => {
625660 assert . ifError ( err ) ;
626661
627- expect ( crr . s3 . listObjectVersions ) . toHaveBeenCalledTimes ( 1 ) ;
628- expect ( crr . s3 . getBucketReplication ) . toHaveBeenCalledTimes ( 1 ) ;
662+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ;
663+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
664+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } )
665+ } ) ) ;
666+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 2 , expect . objectContaining ( {
667+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } )
668+ } ) ) ;
629669
630670 expect ( crr . bb . getMetadata ) . toHaveBeenCalledTimes ( 2 ) ;
631671 expect ( crr . bb . getMetadata ) . toHaveBeenNthCalledWith ( 1 , {
@@ -693,15 +733,20 @@ describe('ReplicationStatusUpdater with currentVersionOnly', () => {
693733 workers : 10 ,
694734 replicationStatusToProcess : [ 'NEW' ] ,
695735 currentVersionOnly : false ,
696- } , logger ) ;
697-
698- crr . s3 . listObjectVersions = jest . fn ( ( params , cb ) => cb ( null , listVersionsWithMixedLatest ) ) ;
736+ } , logger , {
737+ ListObjectVersionsCommand : listVersionsWithMixedLatest ,
738+ } ) ;
699739
700740 crr . run ( err => {
701741 assert . ifError ( err ) ;
702742
703- expect ( crr . s3 . listObjectVersions ) . toHaveBeenCalledTimes ( 1 ) ;
704- expect ( crr . s3 . getBucketReplication ) . toHaveBeenCalledTimes ( 1 ) ;
743+ expect ( crr . s3 . send ) . toHaveBeenCalledTimes ( 2 ) ;
744+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 1 , expect . objectContaining ( {
745+ constructor : expect . objectContaining ( { name : 'ListObjectVersionsCommand' } )
746+ } ) ) ;
747+ expect ( crr . s3 . send ) . toHaveBeenNthCalledWith ( 2 , expect . objectContaining ( {
748+ constructor : expect . objectContaining ( { name : 'GetBucketReplicationCommand' } )
749+ } ) ) ;
705750
706751 expect ( crr . bb . getMetadata ) . toHaveBeenCalledTimes ( 2 ) ;
707752 expect ( crr . bb . putMetadata ) . toHaveBeenCalledTimes ( 2 ) ;
0 commit comments