From 47943f19267c042a0a94449b14e5313513346626 Mon Sep 17 00:00:00 2001 From: Maciej Golaszewski Date: Mon, 23 Sep 2024 14:32:56 +0200 Subject: [PATCH] Unit tests for Metrics Server k8sd feature Metrics Server feature lacks unit test this PR implements tests for Metrics Server functionality. KU-1515 --- .../metrics-server/metrics_server_test.go | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/src/k8s/pkg/k8sd/features/metrics-server/metrics_server_test.go b/src/k8s/pkg/k8sd/features/metrics-server/metrics_server_test.go index ced59104f..38c93fc34 100644 --- a/src/k8s/pkg/k8sd/features/metrics-server/metrics_server_test.go +++ b/src/k8s/pkg/k8sd/features/metrics-server/metrics_server_test.go @@ -2,6 +2,7 @@ package metrics_server_test import ( "context" + "errors" "testing" "github.com/canonical/k8s/pkg/client/helm" @@ -14,29 +15,52 @@ import ( ) func TestApplyMetricsServer(t *testing.T) { + + helmErr := errors.New("failed to apply") for _, tc := range []struct { name string config types.MetricsServer expectState helm.State + helmError error }{ { - name: "Enable", + name: "EnableWithoutHelmError", + config: types.MetricsServer{ + Enabled: utils.Pointer(true), + }, + expectState: helm.StatePresent, + helmError: nil, + }, + { + name: "DisableWithoutHelmError", + config: types.MetricsServer{ + Enabled: utils.Pointer(false), + }, + expectState: helm.StateDeleted, + helmError: nil, + }, + { + name: "EnableWithHelmError", config: types.MetricsServer{ Enabled: utils.Pointer(true), }, expectState: helm.StatePresent, + helmError: helmErr, }, { - name: "Disable", + name: "DisableWithHelmError", config: types.MetricsServer{ Enabled: utils.Pointer(false), }, expectState: helm.StateDeleted, + helmError: helmErr, }, } { t.Run(tc.name, func(t *testing.T) { g := NewWithT(t) - h := &helmmock.Mock{} + h := &helmmock.Mock{ + ApplyErr: tc.helmError, + } s := &snapmock.Snap{ Mock: snapmock.Mock{ HelmClient: h, @@ -44,14 +68,20 @@ func TestApplyMetricsServer(t *testing.T) { } status, err := metrics_server.ApplyMetricsServer(context.Background(), s, tc.config, nil) - g.Expect(err).ToNot(HaveOccurred()) + if tc.helmError == nil { + g.Expect(err).ToNot(HaveOccurred()) + } else { + g.Expect(err).To(HaveOccurred()) + } g.Expect(h.ApplyCalledWith).To(ConsistOf(SatisfyAll( HaveField("Chart.Name", Equal("metrics-server")), HaveField("Chart.Namespace", Equal("kube-system")), HaveField("State", Equal(tc.expectState)), ))) - if tc.config.GetEnabled() { + if errors.Is(tc.helmError, helmErr) { + g.Expect(status.Message).To(ContainSubstring(helmErr.Error())) + } else if tc.config.GetEnabled() { g.Expect(status.Message).To(Equal("enabled")) } else { g.Expect(status.Message).To(Equal("disabled"))