From 2f79cf987a7e02e7a19fc5d9dc3f82bdfdf598da Mon Sep 17 00:00:00 2001 From: Rafaela Soares Date: Tue, 23 Jul 2024 13:58:46 +0100 Subject: [PATCH 1/3] add GetCRTConfiguration --- go.mod | 1 + go.sum | 1 + .../memberoperatorconfig/configuration.go | 16 +++++++++++++ .../configuration_test.go | 24 +++++++++++++++++++ .../memberoperatorconfig/mock.go | 16 +++++++++++++ 5 files changed, 58 insertions(+) create mode 100644 pkg/configuration/memberoperatorconfig/mock.go diff --git a/go.mod b/go.mod index 6c3e3605..6bcfeb82 100644 --- a/go.mod +++ b/go.mod @@ -90,6 +90,7 @@ require ( github.com/shopspring/decimal v1.2.0 // indirect github.com/spf13/cast v1.3.1 // indirect github.com/spf13/pflag v1.0.5 // indirect + github.com/stretchr/objx v0.5.2 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.21.0 // indirect diff --git a/go.sum b/go.sum index 72984047..b8a0c09a 100644 --- a/go.sum +++ b/go.sum @@ -566,6 +566,7 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/pkg/configuration/memberoperatorconfig/configuration.go b/pkg/configuration/memberoperatorconfig/configuration.go index 9181e9eb..35373292 100644 --- a/pkg/configuration/memberoperatorconfig/configuration.go +++ b/pkg/configuration/memberoperatorconfig/configuration.go @@ -8,6 +8,7 @@ import ( commonconfig "github.com/codeready-toolchain/toolchain-common/pkg/configuration" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/client" logf "sigs.k8s.io/controller-runtime/pkg/log" ) @@ -23,6 +24,7 @@ type Configuration struct { // then retrieves the latest config using the provided client and updates the cache func GetConfiguration(cl client.Client) (Configuration, error) { config, secrets, err := commonconfig.GetConfig(cl, &toolchainv1alpha1.MemberOperatorConfig{}) + fmt.Println("aqui vai err", err) if err != nil { // return default config logger.Error(err, "failed to retrieve Configuration") @@ -268,3 +270,17 @@ func (a WebConsolePluginConfig) PendoKey() string { func (a WebConsolePluginConfig) PendoHost() string { return commonconfig.GetString(a.w.PendoHost, "cdn.pendo.io") } + +// GetCRTConfiguration creates the client used for configuration and +// returns the loaded CRT configuration +func GetCRTConfiguration(config *rest.Config, scheme *runtime.Scheme) (Configuration, error) { + // create client that will be used for retrieving the member operator config maps + cl, err := client.New(config, client.Options{ + Scheme: scheme, + }) + if err != nil { + return Configuration{}, err + } + + return GetConfiguration(cl) +} diff --git a/pkg/configuration/memberoperatorconfig/configuration_test.go b/pkg/configuration/memberoperatorconfig/configuration_test.go index dab71d81..3d4a951c 100644 --- a/pkg/configuration/memberoperatorconfig/configuration_test.go +++ b/pkg/configuration/memberoperatorconfig/configuration_test.go @@ -6,8 +6,13 @@ import ( commonconfig "github.com/codeready-toolchain/toolchain-common/pkg/configuration" testconfig "github.com/codeready-toolchain/toolchain-common/pkg/test/config" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/rest" + toolchainv1alpha1 "github.com/codeready-toolchain/api/api/v1alpha1" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestAuth(t *testing.T) { @@ -300,3 +305,22 @@ func TestWebConsolePlugin(t *testing.T) { assert.Equal(t, "abc.pendo.io", memberOperatorCfg.WebConsolePlugin().PendoHost()) }) } + +func TestGetCRTConfiguration(t *testing.T) { + scheme := runtime.NewScheme() + mockGetter := new(MockConfigGetter) + mockGetter.On("GetCRTConfiguration", mock.Anything, mock.Anything).Return(Configuration{cfg: &toolchainv1alpha1.MemberOperatorConfigSpec{}}, nil) + + t.Run("succeeds", func(t *testing.T) { + crtConfig, err := mockGetter.GetCRTConfiguration(&rest.Config{}, scheme) + require.NoError(t, err) + assert.NotEmpty(t, crtConfig) + }) + + t.Run("fails", func(t *testing.T) { + crtConfig, err := GetCRTConfiguration(&rest.Config{}, scheme) + require.Error(t, err) + assert.Empty(t, crtConfig) + }) + +} diff --git a/pkg/configuration/memberoperatorconfig/mock.go b/pkg/configuration/memberoperatorconfig/mock.go new file mode 100644 index 00000000..13e07b1d --- /dev/null +++ b/pkg/configuration/memberoperatorconfig/mock.go @@ -0,0 +1,16 @@ +package memberoperatorconfig + +import ( + "github.com/stretchr/testify/mock" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/rest" +) + +type MockConfigGetter struct { + mock.Mock +} + +func (m *MockConfigGetter) GetCRTConfiguration(config *rest.Config, scheme *runtime.Scheme) (Configuration, error) { + args := m.Called(config, scheme) + return args.Get(0).(Configuration), args.Error(1) +} From d6c3d08f7f87818de77314d0320bb98d47a14679 Mon Sep 17 00:00:00 2001 From: Rafaela Soares Date: Tue, 23 Jul 2024 14:06:31 +0100 Subject: [PATCH 2/3] gofmt --- pkg/configuration/memberoperatorconfig/mock.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/configuration/memberoperatorconfig/mock.go b/pkg/configuration/memberoperatorconfig/mock.go index 13e07b1d..f6a4c64b 100644 --- a/pkg/configuration/memberoperatorconfig/mock.go +++ b/pkg/configuration/memberoperatorconfig/mock.go @@ -1,16 +1,16 @@ package memberoperatorconfig import ( - "github.com/stretchr/testify/mock" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/client-go/rest" + "github.com/stretchr/testify/mock" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/rest" ) type MockConfigGetter struct { - mock.Mock + mock.Mock } func (m *MockConfigGetter) GetCRTConfiguration(config *rest.Config, scheme *runtime.Scheme) (Configuration, error) { - args := m.Called(config, scheme) - return args.Get(0).(Configuration), args.Error(1) + args := m.Called(config, scheme) + return args.Get(0).(Configuration), args.Error(1) } From c8a22f1562f81dbd028c54db4bcb7c64db24c33b Mon Sep 17 00:00:00 2001 From: Rafaela Soares Date: Tue, 23 Jul 2024 15:18:29 +0100 Subject: [PATCH 3/3] clean --- pkg/configuration/memberoperatorconfig/configuration.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/configuration/memberoperatorconfig/configuration.go b/pkg/configuration/memberoperatorconfig/configuration.go index 35373292..b98f6d59 100644 --- a/pkg/configuration/memberoperatorconfig/configuration.go +++ b/pkg/configuration/memberoperatorconfig/configuration.go @@ -24,7 +24,6 @@ type Configuration struct { // then retrieves the latest config using the provided client and updates the cache func GetConfiguration(cl client.Client) (Configuration, error) { config, secrets, err := commonconfig.GetConfig(cl, &toolchainv1alpha1.MemberOperatorConfig{}) - fmt.Println("aqui vai err", err) if err != nil { // return default config logger.Error(err, "failed to retrieve Configuration")