@@ -461,7 +461,8 @@ func TestNamespacedResolveMultiple(t *testing.T) {
461461 now := metav1 .Now ()
462462 value := "coolv"
463463 value2 := "cooler"
464- ref := xpv1.NamespacedReference {Name : "cool" }
464+ ref := xpv1.NamespacedReference {Name : "cool" , Namespace : "cool-ns" }
465+ nsOmittedRef := xpv1.NamespacedReference {Name : "cool" }
465466 optionalPolicy := xpv1 .ResolutionPolicyOptional
466467 alwaysPolicy := xpv1 .ResolvePolicyAlways
467468 optionalRef := xpv1.NamespacedReference {Name : "cool" , Policy : & xpv1.Policy {Resolution : & optionalPolicy }}
@@ -616,18 +617,88 @@ func TestNamespacedResolveMultiple(t *testing.T) {
616617 "SuccessfulResolveNamespaced" : {
617618 reason : "Resolve should be successful when a namespace is given" ,
618619 c : & test.MockClient {
619- MockGet : test .NewMockGetFn (nil , func (obj client.Object ) error {
620- meta .SetExternalName (obj .(metav1.Object ), value )
621- return nil
622- }),
620+ MockGet : func (_ context.Context , key client.ObjectKey , obj client.Object ) error {
621+ if key .Namespace == ref .Namespace {
622+ meta .SetExternalName (obj .(metav1.Object ), value )
623+ return nil
624+ }
625+
626+ t .Errorf ("Resolve did not infer to the MR namespace: %v" , key )
627+ return errBoom
628+ },
623629 },
624630 from : & fake.Managed {},
625631 args : args {
626632 req : MultiNamespacedResolutionRequest {
627633 References : []xpv1.NamespacedReference {ref },
628634 To : To {Managed : & fake.Managed {}},
629635 Extract : ExternalName (),
630- Namespace : "cool-ns" ,
636+ },
637+ },
638+ want : want {
639+ rsp : MultiNamespacedResolutionResponse {
640+ ResolvedValues : []string {value },
641+ ResolvedReferences : []xpv1.NamespacedReference {ref },
642+ },
643+ },
644+ },
645+ "SuccessfulResolveInferredNamespace" : {
646+ reason : "Resolve should be successful when a namespace is given" ,
647+ c : & test.MockClient {
648+ MockGet : func (_ context.Context , key client.ObjectKey , obj client.Object ) error {
649+ if key .Namespace == "from-ns" {
650+ meta .SetExternalName (obj .(metav1.Object ), value )
651+ return nil
652+ }
653+
654+ t .Errorf ("Resolve did not infer to the MR namespace: %v" , key )
655+ return errBoom
656+ },
657+ },
658+ from : & fake.Managed {
659+ ObjectMeta : metav1.ObjectMeta {
660+ Name : "some-mr" ,
661+ Namespace : "from-ns" ,
662+ },
663+ },
664+ args : args {
665+ req : MultiNamespacedResolutionRequest {
666+ References : []xpv1.NamespacedReference {nsOmittedRef },
667+ To : To {Managed : & fake.Managed {}},
668+ Extract : ExternalName (),
669+ },
670+ },
671+ want : want {
672+ rsp : MultiNamespacedResolutionResponse {
673+ ResolvedValues : []string {value },
674+ ResolvedReferences : []xpv1.NamespacedReference {nsOmittedRef },
675+ },
676+ },
677+ },
678+ "SuccessfulResolveCrossNamespace" : {
679+ reason : "Resolve should be successful when a namespace is given" ,
680+ c : & test.MockClient {
681+ MockGet : func (_ context.Context , key client.ObjectKey , obj client.Object ) error {
682+ if key .Namespace == ref .Namespace {
683+ meta .SetExternalName (obj .(metav1.Object ), value )
684+ return nil
685+ }
686+
687+ t .Errorf ("Resolve did not infer to the MR namespace: %v" , key )
688+ return errBoom
689+ },
690+ },
691+ from : & fake.Managed {
692+ ObjectMeta : metav1.ObjectMeta {
693+ Name : "some-mr" ,
694+ Namespace : "from-ns" ,
695+ },
696+ },
697+ args : args {
698+ req : MultiNamespacedResolutionRequest {
699+ References : []xpv1.NamespacedReference {ref },
700+ To : To {Managed : & fake.Managed {}},
701+ Extract : ExternalName (),
631702 },
632703 },
633704 want : want {
0 commit comments