@@ -542,7 +542,8 @@ func TestReconcile_VerifyResourceQuotaDeletionForUpgrade(t *testing.T) {
542
542
// Create namespace object for default ArgoCD instance and set resource quota to it.
543
543
defaultArgoNS := & corev1.Namespace {
544
544
ObjectMeta : v1.ObjectMeta {
545
- Name : serviceNamespace ,
545
+ Name : serviceNamespace ,
546
+ Namespace : serviceNamespace ,
546
547
},
547
548
}
548
549
fakeClient .Create (context .TODO (), defaultArgoNS )
@@ -632,6 +633,110 @@ func TestReconcile_InfrastructureNode(t *testing.T) {
632
633
633
634
}
634
635
636
+ func TestReconcile_PSSLabels (t * testing.T ) {
637
+ logf .SetLogger (argocd .ZapLogger (true ))
638
+ s := scheme .Scheme
639
+ addKnownTypesToScheme (s )
640
+
641
+ testCases := []struct {
642
+ name string
643
+ namespace string
644
+ labels map [string ]string
645
+ }{
646
+ {
647
+ name : "modified valid PSS labels for openshift-gitops ns" ,
648
+ namespace : "openshift-gitops" ,
649
+ labels : map [string ]string {
650
+ "pod-security.kubernetes.io/enforce" : "privileged" ,
651
+ "pod-security.kubernetes.io/enforce-version" : "v1.30" ,
652
+ "pod-security.kubernetes.io/audit" : "privileged" ,
653
+ "pod-security.kubernetes.io/audit-version" : "v1.29" ,
654
+ "pod-security.kubernetes.io/warn" : "privileged" ,
655
+ "pod-security.kubernetes.io/warn-version" : "v1.29" ,
656
+ },
657
+ },
658
+ {
659
+ name : "modified invalid and empty PSS labels for openshift-gitops ns" ,
660
+ namespace : "openshift-gitops" ,
661
+ labels : map [string ]string {
662
+ "pod-security.kubernetes.io/enforce" : "invalid" ,
663
+ "pod-security.kubernetes.io/enforce-version" : "invalid" ,
664
+ "pod-security.kubernetes.io/warn" : "invalid" ,
665
+ "pod-security.kubernetes.io/warn-version" : "invalid" ,
666
+ },
667
+ },
668
+ }
669
+
670
+ expected_labels := map [string ]string {
671
+ "pod-security.kubernetes.io/enforce" : "restricted" ,
672
+ "pod-security.kubernetes.io/enforce-version" : "v1.29" ,
673
+ "pod-security.kubernetes.io/audit" : "restricted" ,
674
+ "pod-security.kubernetes.io/audit-version" : "latest" ,
675
+ "pod-security.kubernetes.io/warn" : "restricted" ,
676
+ "pod-security.kubernetes.io/warn-version" : "latest" ,
677
+ }
678
+
679
+ fakeClient := fake .NewFakeClient (util .NewClusterVersion ("4.7.1" ), newGitopsService ())
680
+ reconciler := newReconcileGitOpsService (fakeClient , s )
681
+
682
+ _ , err := reconciler .Reconcile (context .TODO (), newRequest ("test" , "test" ))
683
+ assertNoError (t , err )
684
+
685
+ // Create a user defined namespace
686
+ testNS := newRestrictedNamespace ("test" )
687
+ err = fakeClient .Create (context .TODO (), testNS )
688
+ assertNoError (t , err )
689
+
690
+ // Create an ArgoCD instance in the user defined namespace
691
+ testArgoCD := & argoapp.ArgoCD {
692
+ ObjectMeta : v1.ObjectMeta {
693
+ Name : "test" ,
694
+ Namespace : "test" ,
695
+ },
696
+ Spec : argoapp.ArgoCDSpec {},
697
+ }
698
+ err = fakeClient .Create (context .TODO (), testArgoCD )
699
+ assertNoError (t , err )
700
+
701
+ _ , err = reconciler .Reconcile (context .TODO (), newRequest ("test" , "test" ))
702
+ assertNoError (t , err )
703
+
704
+ // Check if PSS labels are addded to the user defined ns
705
+ reconciled_ns := & corev1.Namespace {}
706
+ err = fakeClient .Get (context .TODO (), types.NamespacedName {Name : "test" },
707
+ reconciled_ns )
708
+ assertNoError (t , err )
709
+
710
+ for label , _ := range reconciled_ns .ObjectMeta .Labels {
711
+ _ , found := expected_labels [label ]
712
+ // Fail if label is found
713
+ assert .Check (t , found != true )
714
+ }
715
+
716
+ for _ , tc := range testCases {
717
+ existing_ns := & corev1.Namespace {}
718
+ assert .NilError (t , fakeClient .Get (context .TODO (), types.NamespacedName {Name : tc .namespace }, existing_ns ), err )
719
+
720
+ // Assign new values, confirm the assignment and update the PSS labels
721
+ existing_ns .ObjectMeta .Labels = tc .labels
722
+ fakeClient .Update (context .TODO (), existing_ns )
723
+ assert .NilError (t , fakeClient .Get (context .TODO (), types.NamespacedName {Name : tc .namespace }, existing_ns ), err )
724
+ assert .DeepEqual (t , existing_ns .ObjectMeta .Labels , tc .labels )
725
+
726
+ _ , err := reconciler .Reconcile (context .TODO (), newRequest ("test" , "test" ))
727
+ assertNoError (t , err )
728
+
729
+ assert .NilError (t , fakeClient .Get (context .TODO (), types.NamespacedName {Name : tc .namespace }, reconciled_ns ), err )
730
+
731
+ for key , value := range expected_labels {
732
+ label , found := reconciled_ns .ObjectMeta .Labels [key ]
733
+ // Fail if label is not found, comapre the values with the expected values if found
734
+ assert .Check (t , found )
735
+ assert .Equal (t , label , value )
736
+ }
737
+ }
738
+ }
739
+
635
740
func addKnownTypesToScheme (scheme * runtime.Scheme ) {
636
741
scheme .AddKnownTypes (configv1 .GroupVersion , & configv1.ClusterVersion {})
637
742
scheme .AddKnownTypes (pipelinesv1alpha1 .GroupVersion , & pipelinesv1alpha1.GitopsService {})
0 commit comments