@@ -46,9 +46,9 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
46
46
nil ,
47
47
v1alpha1 .CSVPhasePending ,
48
48
),
49
- existingObjs : nil ,
50
- existingExtObjs : nil ,
51
- met : false ,
49
+ existingObjs : nil ,
50
+ existingExtObjs : nil ,
51
+ met : false ,
52
52
expectedRequirementStatuses : nil ,
53
53
expectedError : fmt .Errorf ("unexpected end of JSON input" ),
54
54
},
@@ -637,3 +637,101 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
637
637
})
638
638
}
639
639
}
640
+
641
+ func TestMinKubeVersionStatus (t * testing.T ) {
642
+ namespace := "ns"
643
+ csv := csv ("csv1" ,
644
+ namespace ,
645
+ "0.0.0" ,
646
+ "" ,
647
+ v1alpha1.NamedInstallStrategy {"deployment" , json.RawMessage {}},
648
+ nil ,
649
+ nil ,
650
+ v1alpha1 .CSVPhasePending ,
651
+ )
652
+
653
+ tests := []struct {
654
+ description string
655
+ csvName string
656
+ minKubeVersion string
657
+ expectedMet bool
658
+ expectedRequirementStatuses []v1alpha1.RequirementStatus
659
+ }{
660
+ {
661
+ description : "minKubeVersion is not specfied" ,
662
+ csvName : "test1" ,
663
+ minKubeVersion : "" ,
664
+ expectedMet : true ,
665
+ expectedRequirementStatuses : []v1alpha1.RequirementStatus {},
666
+ },
667
+ {
668
+ description : "minKubeVersion is met" ,
669
+ csvName : "test2" ,
670
+ minKubeVersion : "0.0.0" ,
671
+ expectedMet : true ,
672
+ expectedRequirementStatuses : []v1alpha1.RequirementStatus {
673
+ v1alpha1.RequirementStatus {
674
+ Status : v1alpha1 .RequirementStatusReasonPresent ,
675
+ Message : fmt .Sprintf ("CSV minKubeVersion (%s) less than server version" , "0.0.0" ),
676
+ Group : "operators.coreos.com" ,
677
+ Version : "v1alpha1" ,
678
+ Kind : "ClusterServiceVersion" ,
679
+ Name : "test2" ,
680
+ },
681
+ },
682
+ },
683
+ {
684
+ description : "minKubeVersion is unmet" ,
685
+ csvName : "test3" ,
686
+ minKubeVersion : "999.999.999" ,
687
+ expectedMet : false ,
688
+ expectedRequirementStatuses : []v1alpha1.RequirementStatus {
689
+ v1alpha1.RequirementStatus {
690
+ Status : v1alpha1 .RequirementStatusReasonPresentNotSatisfied ,
691
+ Message : fmt .Sprintf ("CSV version requirement not met: minKubeVersion (%s)" , "999.999.999" ),
692
+ Group : "operators.coreos.com" ,
693
+ Version : "v1alpha1" ,
694
+ Kind : "ClusterServiceVersion" ,
695
+ Name : "test3" ,
696
+ },
697
+ },
698
+ },
699
+ {
700
+ description : "minKubeVersion is invalid" ,
701
+ csvName : "test4" ,
702
+ minKubeVersion : "a.b.c" ,
703
+ expectedMet : false ,
704
+ expectedRequirementStatuses : []v1alpha1.RequirementStatus {
705
+ v1alpha1.RequirementStatus {
706
+ Status : v1alpha1 .RequirementStatusReasonPresentNotSatisfied ,
707
+ Message : "CSV version parsing error" ,
708
+ Group : "operators.coreos.com" ,
709
+ Version : "v1alpha1" ,
710
+ Kind : "ClusterServiceVersion" ,
711
+ Name : "test4" ,
712
+ },
713
+ },
714
+ },
715
+ }
716
+
717
+ for _ , test := range tests {
718
+ t .Run (test .description , func (t * testing.T ) {
719
+ ctx , cancel := context .WithCancel (context .TODO ())
720
+ defer cancel ()
721
+ op , err := NewFakeOperator (ctx , withNamespaces (namespace ), withOperatorNamespace (namespace ), withClientObjs (csv ))
722
+ require .NoError (t , err )
723
+
724
+ // Get the permission status
725
+ met , status := op .minKubeVersionStatus (test .csvName , test .minKubeVersion )
726
+ require .Equal (t , test .expectedMet , met )
727
+ if len (test .expectedRequirementStatuses ) > 0 {
728
+ require .Equal (t , status [0 ].Status , test .expectedRequirementStatuses [0 ].Status )
729
+ require .Equal (t , status [0 ].Kind , test .expectedRequirementStatuses [0 ].Kind )
730
+ require .Equal (t , status [0 ].Name , test .expectedRequirementStatuses [0 ].Name )
731
+ require .Contains (t , status [0 ].Message , test .expectedRequirementStatuses [0 ].Message )
732
+ } else {
733
+ require .Equal (t , status , []v1alpha1.RequirementStatus (nil ))
734
+ }
735
+ })
736
+ }
737
+ }
0 commit comments