package controller import ( "testing" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" terdutv1alpha1 "git.ryuvia.com/niklas/terdut-operator/api/v1alpha1" ) const ( testSelectorLabelKey = "terdut.ryuvia.com/allowed" testSelectorFrom = "Selector" testSelectorLabelValue = "true" ) func TestAllowedTeamsPermits(t *testing.T) { cases := []struct { name string allowed terdutv1alpha1.AllowedTeamsNamespaces labels map[string]string want bool }{ { name: "unset defaults closed", allowed: terdutv1alpha1.AllowedTeamsNamespaces{}, want: false, }, { name: "None is closed", allowed: terdutv1alpha1.AllowedTeamsNamespaces{From: "None"}, want: false, }, { name: "Same is closed (same-namespace never reaches this function anyway)", allowed: terdutv1alpha1.AllowedTeamsNamespaces{From: "Same"}, want: false, }, { name: "All is open regardless of labels", allowed: terdutv1alpha1.AllowedTeamsNamespaces{From: "All"}, labels: nil, want: true, }, { name: "Selector with no selector set is closed", allowed: terdutv1alpha1.AllowedTeamsNamespaces{From: testSelectorFrom}, want: false, }, { name: "Selector matching labels is open", allowed: terdutv1alpha1.AllowedTeamsNamespaces{ From: testSelectorFrom, Selector: &metav1.LabelSelector{MatchLabels: map[string]string{testSelectorLabelKey: testSelectorLabelValue}}, }, labels: map[string]string{testSelectorLabelKey: testSelectorLabelValue}, want: true, }, { name: "Selector not matching labels is closed", allowed: terdutv1alpha1.AllowedTeamsNamespaces{ From: testSelectorFrom, Selector: &metav1.LabelSelector{MatchLabels: map[string]string{testSelectorLabelKey: testSelectorLabelValue}}, }, labels: map[string]string{"something-else": "true"}, want: false, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { got, err := allowedTeamsPermits(tc.allowed, tc.labels) if err != nil { t.Fatalf("allowedTeamsPermits() error = %v", err) } if got != tc.want { t.Errorf("allowedTeamsPermits() = %v, want %v", got, tc.want) } }) } }