diff --git a/apis/status/v1beta1/configpodstatus_types_test.go b/apis/status/v1beta1/configpodstatus_types_test.go new file mode 100644 index 00000000000..0e5c97260ae --- /dev/null +++ b/apis/status/v1beta1/configpodstatus_types_test.go @@ -0,0 +1,68 @@ +package v1beta1_test + +import ( + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/open-policy-agent/gatekeeper/v3/apis/status/v1beta1" + "github.com/open-policy-agent/gatekeeper/v3/pkg/fakes" + "github.com/open-policy-agent/gatekeeper/v3/pkg/operations" + "github.com/open-policy-agent/gatekeeper/v3/test/testutils" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/runtime" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" +) + +func TestNewConfigStatusForPod(t *testing.T) { + podName := "some-gk-pod" + podNS := "a-gk-namespace" + configName := "a-config" + + testutils.Setenv(t, "POD_NAMESPACE", podNS) + + scheme := runtime.NewScheme() + err := v1beta1.AddToScheme(scheme) + if err != nil { + t.Fatal(err) + } + + err = corev1.AddToScheme(scheme) + if err != nil { + t.Fatal(err) + } + + pod := fakes.Pod( + fakes.WithNamespace(podNS), + fakes.WithName(podName), + ) + + expectedStatus := &v1beta1.ConfigPodStatus{} + expectedStatus.SetName("some--gk--pod-a--config") + expectedStatus.SetNamespace(podNS) + expectedStatus.Status.ID = podName + expectedStatus.Status.Operations = operations.AssignedStringList() + expectedStatus.SetLabels(map[string]string{ + v1beta1.ConfigNameLabel: configName, + v1beta1.PodLabel: podName, + }) + + err = controllerutil.SetOwnerReference(pod, expectedStatus, scheme) + if err != nil { + t.Fatal(err) + } + + status, err := v1beta1.NewConfigStatusForPod(pod, configName, scheme) + if err != nil { + t.Fatal(err) + } + if diff := cmp.Diff(expectedStatus, status); diff != "" { + t.Fatal(diff) + } + n, err := v1beta1.KeyForConfig(podName, configName) + if err != nil { + t.Fatal(err) + } + if status.Name != n { + t.Fatal("got status.Name != n, want equal") + } +}