@@ -14,6 +14,7 @@ import (
14
14
"k8s.io/apimachinery/pkg/types"
15
15
16
16
"github.com/operator-framework/api/pkg/operators/v1alpha1"
17
+ "github.com/stretchr/testify/assert"
17
18
)
18
19
19
20
func TestRequirementAndPermissionStatus (t * testing.T ) {
@@ -297,7 +298,7 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
297
298
Version : "v1" ,
298
299
Kind : "ServiceAccount" ,
299
300
Name : "sa" ,
300
- Status : v1alpha1 .RequirementStatusReasonPresent ,
301
+ Status : v1alpha1 .RequirementStatusReasonPresentNotSatisfied ,
301
302
Dependents : []v1alpha1.DependentStatus {
302
303
{
303
304
Group : "rbac.authorization.k8s.io" ,
@@ -641,7 +642,7 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
641
642
Version : "v1" ,
642
643
Kind : "CustomResourceDefinition" ,
643
644
Name : "c1.g1" ,
644
- Status : v1alpha1 .RequirementStatusReasonNotAvailable ,
645
+ Status : v1alpha1 .RequirementStatusReasonNotPresent ,
645
646
},
646
647
{"operators.coreos.com" , "v1alpha1" , "ClusterServiceVersion" , "csv1" }: {
647
648
Group : "operators.coreos.com" ,
@@ -773,55 +774,124 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
773
774
},
774
775
},
775
776
},
776
- & rbacv1.Role {
777
- ObjectMeta : metav1.ObjectMeta {
778
- Name : "role" ,
779
- Namespace : namespace ,
780
- },
781
- Rules : []rbacv1.PolicyRule {
777
+ },
778
+ existingExtObjs : nil ,
779
+ met : false ,
780
+ expectedRequirementStatuses : map [gvkn ]v1alpha1.RequirementStatus {
781
+ {"" , "v1" , "ServiceAccount" , "sa" }: {
782
+ Version : "v1" ,
783
+ Kind : "ServiceAccount" ,
784
+ Name : "sa" ,
785
+ Status : v1alpha1 .RequirementStatusReasonPresentNotSatisfied ,
786
+ Dependents : []v1alpha1.DependentStatus {},
787
+ },
788
+ {"operators.coreos.com" , "v1alpha1" , "ClusterServiceVersion" , "csv1" }: {
789
+ Group : "operators.coreos.com" ,
790
+ Version : "v1alpha1" ,
791
+ Kind : "ClusterServiceVersion" ,
792
+ Name : "csv1" ,
793
+ Status : v1alpha1 .RequirementStatusReasonPresent ,
794
+ },
795
+ },
796
+ expectedError : nil ,
797
+ },
798
+ {
799
+ description : "RequirementMet/ServiceAccountOwnedByNonCSV" ,
800
+ csv : csvWithUID (csv ("csv" ,
801
+ namespace ,
802
+ "0.0.0" ,
803
+ "" ,
804
+ installStrategy (
805
+ "csv-dep" ,
806
+ []v1alpha1.StrategyDeploymentPermissions {
782
807
{
783
- APIGroups : []string {"" },
784
- Verbs : []string {"*" },
785
- Resources : []string {"donuts" },
808
+ ServiceAccountName : "sa" ,
786
809
},
787
810
},
788
- },
789
- & rbacv1.RoleBinding {
811
+ nil ,
812
+ ),
813
+ nil ,
814
+ nil ,
815
+ v1alpha1 .CSVPhasePending ,
816
+ ), types .UID ("csv-uid" )),
817
+ existingObjs : []runtime.Object {
818
+ & corev1.ServiceAccount {
790
819
ObjectMeta : metav1.ObjectMeta {
791
- Name : "roleBinding " ,
820
+ Name : "sa " ,
792
821
Namespace : namespace ,
822
+ UID : types .UID ("sa" ),
823
+ OwnerReferences : []metav1.OwnerReference {
824
+ {
825
+ Kind : v1alpha1 .SubscriptionKind , // arbitrary non-CSV kind
826
+ UID : "non-csv" ,
827
+ },
828
+ },
793
829
},
794
- Subjects : []rbacv1.Subject {
830
+ },
831
+ },
832
+ existingExtObjs : nil ,
833
+ met : true ,
834
+ expectedRequirementStatuses : map [gvkn ]v1alpha1.RequirementStatus {
835
+ {"" , "v1" , "ServiceAccount" , "sa" }: {
836
+ Version : "v1" ,
837
+ Kind : "ServiceAccount" ,
838
+ Name : "sa" ,
839
+ Status : v1alpha1 .RequirementStatusReasonPresent ,
840
+ Dependents : []v1alpha1.DependentStatus {},
841
+ },
842
+ {"operators.coreos.com" , "v1alpha1" , "ClusterServiceVersion" , "csv" }: {
843
+ Group : "operators.coreos.com" ,
844
+ Version : "v1alpha1" ,
845
+ Kind : "ClusterServiceVersion" ,
846
+ Name : "csv" ,
847
+ Status : v1alpha1 .RequirementStatusReasonPresent ,
848
+ },
849
+ },
850
+ expectedError : nil ,
851
+ },
852
+ {
853
+ description : "RequirementMet/ServiceAccountHasNoOwner" ,
854
+ csv : csvWithUID (csv ("csv" ,
855
+ namespace ,
856
+ "0.0.0" ,
857
+ "" ,
858
+ installStrategy (
859
+ "csv-dep" ,
860
+ []v1alpha1.StrategyDeploymentPermissions {
795
861
{
796
- Kind : "ServiceAccount" ,
797
- APIGroup : "" ,
798
- Name : "sa" ,
799
- Namespace : namespace ,
862
+ ServiceAccountName : "sa" ,
800
863
},
801
864
},
802
- RoleRef : rbacv1.RoleRef {
803
- APIGroup : "rbac.authorization.k8s.io" ,
804
- Kind : "Role" ,
805
- Name : "role" ,
865
+ nil ,
866
+ ),
867
+ nil ,
868
+ nil ,
869
+ v1alpha1 .CSVPhasePending ,
870
+ ), types .UID ("csv-uid" )),
871
+ existingObjs : []runtime.Object {
872
+ & corev1.ServiceAccount {
873
+ ObjectMeta : metav1.ObjectMeta {
874
+ Name : "sa" ,
875
+ Namespace : namespace ,
876
+ UID : types .UID ("sa" ),
806
877
},
807
878
},
808
879
},
809
880
existingExtObjs : nil ,
810
- met : false ,
881
+ met : true ,
811
882
expectedRequirementStatuses : map [gvkn ]v1alpha1.RequirementStatus {
812
883
{"" , "v1" , "ServiceAccount" , "sa" }: {
813
- Group : "" ,
814
884
Version : "v1" ,
815
885
Kind : "ServiceAccount" ,
816
886
Name : "sa" ,
817
- Status : v1alpha1 .RequirementStatusReasonNotPresent ,
887
+ Status : v1alpha1 .RequirementStatusReasonPresent ,
818
888
Dependents : []v1alpha1.DependentStatus {},
819
889
},
820
- {"operators.coreos.com" , "v1alpha1" , "ClusterServiceVersion" , "csv1 " }: {
890
+ {"operators.coreos.com" , "v1alpha1" , "ClusterServiceVersion" , "csv " }: {
821
891
Group : "operators.coreos.com" ,
822
892
Version : "v1alpha1" ,
823
893
Kind : "ClusterServiceVersion" ,
824
- Name : "csv1 " ,
894
+ Name : "csv " ,
825
895
Status : v1alpha1 .RequirementStatusReasonPresent ,
826
896
},
827
897
},
@@ -843,7 +913,8 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
843
913
require .Error (t , err )
844
914
require .EqualError (t , test .expectedError , err .Error ())
845
915
}
846
- require .Equal (t , test .met , met )
916
+ assert := assert .New (t )
917
+ assert .Equal (test .met , met )
847
918
848
919
for _ , status := range statuses {
849
920
key := gvkn {
@@ -854,14 +925,15 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
854
925
}
855
926
856
927
expected , ok := test .expectedRequirementStatuses [key ]
857
- require .True (t , ok , fmt .Sprintf ("permission requirement status %+v found but not expected" , key ))
858
- require .Len (t , status .Dependents , len (expected .Dependents ), "number of dependents is not what was expected" )
928
+ assert .True (ok , fmt .Sprintf ("permission requirement status %+v found but not expected" , key ))
929
+ assert .Equal (expected .Status , status .Status )
930
+ assert .Len (status .Dependents , len (expected .Dependents ), "number of dependents is not what was expected" )
859
931
860
932
// Delete the requirement status to mark as found
861
933
delete (test .expectedRequirementStatuses , key )
862
934
}
863
935
864
- require .Len (t , test .expectedRequirementStatuses , 0 , "not all expected permission requirement statuses were found" )
936
+ assert .Len (test .expectedRequirementStatuses , 0 , "not all expected permission requirement statuses were found" )
865
937
})
866
938
}
867
939
}
0 commit comments