package gitops import ( "testing" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/skyhook-io/radar/pkg/resourceid" ) func TestFluxHelmLabelledRelease(t *testing.T) { origin := map[string]string{fluxHelmNameLabel: "podinfo", fluxHelmNSLabel: "flux-system"} yes, no := true, false release := resourceid.Ref{Group: "helm.toolkit.fluxcd.io", Kind: "HelmRelease", Namespace: "flux-system", Name: "podinfo"} for _, tc := range []struct { name string meta metav1.ObjectMeta want bool }{ {name: "origin labels", meta: metav1.ObjectMeta{Labels: origin}, want: true}, {name: "name without namespace", meta: metav1.ObjectMeta{Labels: map[string]string{fluxHelmNameLabel: "podinfo"}}}, {name: "chart instance label", meta: metav1.ObjectMeta{Labels: map[string]string{"app.kubernetes.io/instance": "podinfo"}}}, {name: "Helm hook", meta: metav1.ObjectMeta{Labels: origin, Annotations: map[string]string{"helm.sh/hook": "pre-upgrade"}}}, {name: "generated by a controller", meta: metav1.ObjectMeta{Labels: origin, OwnerReferences: []metav1.OwnerReference{{Kind: "ReplicaSet", Name: "podinfo-abc", Controller: &yes}}}}, {name: "owned without a controller", meta: metav1.ObjectMeta{Labels: origin, OwnerReferences: []metav1.OwnerReference{{Kind: "ConfigMap", Name: "anchor", Controller: &no}}}, want: true}, } { t.Run(tc.name, func(t *testing.T) { got, ok := FluxHelmLabelledRelease(&tc.meta) if ok != tc.want || ok && got != release { t.Fatalf("FluxHelmLabelledRelease = %v, %v; want member=%v", got, ok, tc.want) } }) } }