@@ -459,7 +459,6 @@ func TestReconcilerAdoptOrCreateResource_Create(t *testing.T) {
459
459
).Once ()
460
460
rm .On ("IsSynced" , ctx , latest ).Return (true , nil )
461
461
rmf , rd := managedResourceManagerFactoryMocks (desired , latest )
462
- rd .On ("MarkAdopted" , latest ).Return ()
463
462
464
463
rm .On ("LateInitialize" , ctx , latest ).Return (latest , nil )
465
464
rd .On ("IsManaged" , desired ).Return (false ).Once ()
@@ -484,31 +483,59 @@ func TestReconcilerAdoptOrCreateResource_Create(t *testing.T) {
484
483
485
484
func TestReconcilerAdoptOrCreateResource_Adopt (t * testing.T ) {
486
485
require := require .New (t )
486
+ assert := assert .New (t )
487
487
488
488
ctx := context .TODO ()
489
+ adoptionFieldsString := "{\" arn\" : \" my-adopt-book-arn\" }"
490
+ adoptionFields := map [string ]string {
491
+ "arn" : "my-adopt-book-arn" ,
492
+ }
489
493
490
494
desired , _ , metaObj := resourceMocks ()
491
495
desired .On ("ReplaceConditions" , []* ackv1alpha1.Condition {}).Return ()
492
496
metaObj .SetAnnotations (map [string ]string {
493
497
ackv1alpha1 .AnnotationAdoptionPolicy : "adopt-or-create" ,
494
- ackv1alpha1 .AnnotationAdoptionFields : "{ \" arn \" : \" my-adopt-book-arn \" }" ,
498
+ ackv1alpha1 .AnnotationAdoptionFields : adoptionFieldsString ,
495
499
})
496
500
497
501
ids := & ackmocks.AWSResourceIdentifiers {}
498
502
delta := ackcompare .NewDelta ()
499
- delta .Add ("Spec.A " , "val1" , "val2" )
503
+ delta .Add ("Spec" , "val1" , "val2" )
500
504
501
- latest , latestRTObj , _ := resourceMocks ()
505
+ latest , latestRTObj , latestMetaObj := resourceMocks ()
502
506
latest .On ("Identifiers" ).Return (ids )
503
507
latest .On ("Conditions" ).Return ([]* ackv1alpha1.Condition {})
504
- latest .On ("MetaObject" ).Return (metav1.ObjectMeta {
508
+ latest .On (
509
+ "ReplaceConditions" ,
510
+ mock .AnythingOfType ("[]*v1alpha1.Condition" ),
511
+ ).Return ().Run (func (args mock.Arguments ) {
512
+ conditions := args .Get (0 ).([]* ackv1alpha1.Condition )
513
+ hasSynced := false
514
+ for _ , condition := range conditions {
515
+ if condition .Type != ackv1alpha1 .ConditionTypeResourceSynced {
516
+ continue
517
+ }
518
+
519
+ hasSynced = true
520
+ assert .Equal (corev1 .ConditionTrue , condition .Status )
521
+ assert .Equal (ackcondition .SyncedMessage , * condition .Message )
522
+ }
523
+ assert .True (hasSynced )
524
+ })
525
+ latestMetaObj .SetAnnotations (map [string ]string {
526
+ ackv1alpha1 .AnnotationAdoptionPolicy : "adopt-or-create" ,
527
+ ackv1alpha1 .AnnotationAdoptionFields : adoptionFieldsString ,
528
+ })
529
+ updated , updatedRTObj , _ := resourceMocks ()
530
+ updated .On ("Identifiers" ).Return (ids )
531
+ updated .On ("Conditions" ).Return ([]* ackv1alpha1.Condition {})
532
+ updated .On ("MetaObject" ).Return (metav1.ObjectMeta {
505
533
Annotations : map [string ]string {
506
534
ackv1alpha1 .AnnotationAdoptionPolicy : "adopt-or-create" ,
507
535
ackv1alpha1 .AnnotationAdoptionFields : "{\" arn\" : \" my-adopt-book-arn\" }" ,
508
536
},
509
537
})
510
- latest .On ("Conditions" ).Return ([]* ackv1alpha1.Condition {})
511
- latest .On (
538
+ updated .On (
512
539
"ReplaceConditions" ,
513
540
mock .AnythingOfType ("[]*v1alpha1.Condition" ),
514
541
).Return ()
@@ -517,36 +544,50 @@ func TestReconcilerAdoptOrCreateResource_Adopt(t *testing.T) {
517
544
rm .On ("ResolveReferences" , ctx , nil , desired ).Return (
518
545
desired , false , nil ,
519
546
).Times (2 )
547
+ desired .On ("PopulateResourceFromAnnotation" , adoptionFields ).Return (nil )
520
548
rm .On ("ClearResolvedReferences" , desired ).Return (desired )
549
+ rm .On ("ClearResolvedReferences" , updated ).Return (updated )
521
550
rm .On ("ClearResolvedReferences" , latest ).Return (latest )
522
551
rm .On ("ReadOne" , ctx , desired ).Return (
523
552
latest , nil ,
524
553
).Once ()
525
554
rm .On ("Update" , ctx , desired , latest , delta ).Return (
526
- latest , nil ,
555
+ updated , nil ,
527
556
).Once ()
528
557
rm .On ("IsSynced" , ctx , latest ).Return (true , nil )
529
558
rmf , rd := managedResourceManagerFactoryMocks (desired , latest )
530
559
531
- rm .On ("LateInitialize" , ctx , latest ).Return (latest , nil )
560
+ rm .On ("LateInitialize" , ctx , updated ).Return (latest , nil )
561
+ rd .On ("IsManaged" , desired ).Return (false ).Once ()
532
562
rd .On ("IsManaged" , desired ).Return (true )
533
- rd .On ("Delta" , desired , latest ).Return (
534
- delta ,
535
- ).Once ()
536
- rd .On ("Delta" , desired , latest ).Return (ackcompare .NewDelta ())
537
- rd .On ("Delta" , latest , latest ).Return (ackcompare .NewDelta ())
563
+ rd .On ("MarkAdopted" , latest ).Return ().Once ()
564
+ latestMetaObj .SetAnnotations (map [string ]string {
565
+ ackv1alpha1 .AnnotationAdoptionPolicy : "adopt-or-create" ,
566
+ ackv1alpha1 .AnnotationAdoptionFields : adoptionFieldsString ,
567
+ ackv1alpha1 .AnnotationAdopted : "true" ,
568
+ })
569
+ // setManaged
570
+ rd .On ("Delta" , latest , latest ).Return (ackcompare .NewDelta ()).Once ()
571
+ // update
572
+ rd .On ("Delta" , desired , latest ).Return (delta ).Once ()
573
+ //
574
+ rd .On ("Delta" , desired , updated ).Return (ackcompare .NewDelta ())
575
+ rd .On ("Delta" , updated , updated ).Return (ackcompare .NewDelta ())
576
+ rd .On ("MarkAdopted" , updated ).Return ().Once ()
538
577
539
578
r , kc , scmd := reconcilerMocks (rmf )
540
579
rm .On ("EnsureTags" , ctx , desired , scmd ).Return (nil )
541
580
statusWriter := & ctrlrtclientmock.SubResourceWriter {}
542
581
kc .On ("Status" ).Return (statusWriter )
543
582
kc .On ("Patch" , withoutCancelContextMatcher , latestRTObj , mock .AnythingOfType ("*client.mergeFromPatch" )).Return (nil )
544
- statusWriter .On ("Patch" , withoutCancelContextMatcher , latestRTObj , mock .AnythingOfType ("*client.mergeFromPatch" )).Return (nil )
583
+ kc .On ("Patch" , withoutCancelContextMatcher , updatedRTObj , mock .AnythingOfType ("*client.mergeFromPatch" )).Return (nil )
584
+ statusWriter .On ("Patch" , withoutCancelContextMatcher , updatedRTObj , mock .AnythingOfType ("*client.mergeFromPatch" )).Return (nil )
545
585
_ , err := r .Sync (ctx , rm , desired )
546
586
require .Nil (err )
547
587
rm .AssertNumberOfCalls (t , "ReadOne" , 1 )
548
588
rm .AssertCalled (t , "Update" , ctx , desired , latest , delta )
549
589
rd .AssertCalled (t , "Delta" , desired , latest )
590
+ rd .AssertNumberOfCalls (t , "MarkAdopted" , 2 )
550
591
// Assert that the resource is not created or updated
551
592
rm .AssertNumberOfCalls (t , "Create" , 0 )
552
593
}
0 commit comments