Skip to content

Commit 08e61fd

Browse files
committed
Add unit test for minKubeVersionStatus
Signed-off-by: Vu Dinh <[email protected]>
1 parent eaeeafc commit 08e61fd

File tree

1 file changed

+101
-3
lines changed

1 file changed

+101
-3
lines changed

pkg/controller/operators/olm/requirements_test.go

Lines changed: 101 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
4646
nil,
4747
v1alpha1.CSVPhasePending,
4848
),
49-
existingObjs: nil,
50-
existingExtObjs: nil,
51-
met: false,
49+
existingObjs: nil,
50+
existingExtObjs: nil,
51+
met: false,
5252
expectedRequirementStatuses: nil,
5353
expectedError: fmt.Errorf("unexpected end of JSON input"),
5454
},
@@ -637,3 +637,101 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
637637
})
638638
}
639639
}
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

Comments
 (0)