@@ -23,6 +23,7 @@ import (
2323
2424 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2525 "k8s.io/apimachinery/pkg/types"
26+ "sigs.k8s.io/cluster-api/pkg/apis/cluster/v1alpha1"
2627)
2728
2829const validCluster = `
@@ -390,3 +391,82 @@ func TestPointsTo(t *testing.T) {
390391 })
391392 }
392393}
394+
395+ func TestHasOwner (t * testing.T ) {
396+
397+ tests := []struct {
398+ name string
399+ refList []metav1.OwnerReference
400+ expected bool
401+ }{
402+ {
403+ name : "no ownership" ,
404+ },
405+ {
406+ name : "owned by cluster" ,
407+ refList : []metav1.OwnerReference {
408+ {
409+ Kind : "Cluster" ,
410+ APIVersion : v1alpha1 .SchemeGroupVersion .String (),
411+ },
412+ },
413+ expected : true ,
414+ },
415+
416+ {
417+ name : "owned by something else" ,
418+ refList : []metav1.OwnerReference {
419+ {
420+ Kind : "Pod" ,
421+ APIVersion : "v1" ,
422+ },
423+ {
424+ Kind : "Deployment" ,
425+ APIVersion : "apps/v1" ,
426+ },
427+ },
428+ },
429+ {
430+ name : "owner by a deployment" ,
431+ refList : []metav1.OwnerReference {
432+ {
433+ Kind : "MachineDeployment" ,
434+ APIVersion : v1alpha1 .SchemeGroupVersion .String (),
435+ },
436+ },
437+ expected : true ,
438+ },
439+ {
440+ name : "right kind, wrong apiversion" ,
441+ refList : []metav1.OwnerReference {
442+ {
443+ Kind : "MachineDeployment" ,
444+ APIVersion : "wrong/v2" ,
445+ },
446+ },
447+ },
448+ {
449+
450+ name : "right apiversion, wrong kind" ,
451+ refList : []metav1.OwnerReference {
452+ {
453+ Kind : "Machine" ,
454+ APIVersion : v1alpha1 .SchemeGroupVersion .String (),
455+ },
456+ },
457+ },
458+ }
459+
460+ for _ , test := range tests {
461+ t .Run (test .name , func (t * testing.T ) {
462+ result := HasOwner (
463+ test .refList ,
464+ v1alpha1 .SchemeGroupVersion .String (),
465+ []string {"MachineDeployment" , "Cluster" },
466+ )
467+ if test .expected != result {
468+ t .Errorf ("expected hasOwner to be %v, got %v" , test .expected , result )
469+ }
470+ })
471+ }
472+ }
0 commit comments