From 6acebb6e18b64e6d6da329ee96e91b5075af9b95 Mon Sep 17 00:00:00 2001 From: yuwan Date: Thu, 27 Jun 2024 15:00:37 +0800 Subject: [PATCH] OCM-8925 | test: automate id:72166 set and get config via rosacli --- tests/ci/labels/features.go | 2 + tests/e2e/test_rosacli_config.go | 95 +++++++++++++++++++ .../exec/rosacli/ocm_resource_service.go | 17 ++++ 3 files changed, 114 insertions(+) create mode 100644 tests/e2e/test_rosacli_config.go diff --git a/tests/ci/labels/features.go b/tests/ci/labels/features.go index 78e616321a..d7efbf11fd 100644 --- a/tests/ci/labels/features.go +++ b/tests/ci/labels/features.go @@ -31,6 +31,7 @@ type featureLabels struct { VerifyResources Labels Version Labels Upgrade Labels + Config Labels } var Feature = initFeatureLabels() @@ -60,6 +61,7 @@ func initFeatureLabels() *featureLabels { fLabels.VerifyResources = Label("feature-verify-resources") fLabels.Version = Label("feature-version") fLabels.Upgrade = Label("feature-upgrade") + fLabels.Config = Label("feature-config") return fLabels } diff --git a/tests/e2e/test_rosacli_config.go b/tests/e2e/test_rosacli_config.go new file mode 100644 index 0000000000..c6b9e94109 --- /dev/null +++ b/tests/e2e/test_rosacli_config.go @@ -0,0 +1,95 @@ +package e2e + +import ( + "strings" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + "github.com/openshift/rosa/tests/ci/labels" + "github.com/openshift/rosa/tests/utils/exec/rosacli" +) + +var _ = Describe("rosacli config", + labels.Feature.Config, + func() { + defer GinkgoRecover() + + var ( + rosaClient *rosacli.Client + originalConfig map[string]string + configName []string + ocmService rosacli.OCMResourceService + ) + + BeforeEach(func() { + By("Init the client") + rosaClient = rosacli.NewClient() + ocmService = rosaClient.OCMResource + + originalConfig = make(map[string]string) + }) + AfterEach(func() { + By("Restore the original config") + if len(originalConfig) > 0 { + for key, value := range originalConfig { + if key != "scopes" { + _, err := ocmService.SetConfig(key, value) + Expect(err).To(BeNil()) + } + } + } + }) + + It("to set and get config via rosacli - [id:72166]", labels.High, labels.Runtime.OCMResources, func() { + By("Get config via rosacli") + configName = []string{ + "access_token", + "client_id", + "client_secret", + "insecure", + "refresh_token", + "scopes", + "token_url", + "url", + "fedramp", + } + for _, name := range configName { + config, err := ocmService.GetConfig(name) + Expect(err).To(BeNil()) + if name == "client_secret" { + Expect(strings.TrimSuffix(config.String(), "\n")).To(Equal("")) + originalConfig[name] = "" + } else { + Expect(config).ToNot(Equal("")) + originalConfig[name] = strings.TrimSuffix(config.String(), "\n") + } + } + By("Set some config via rosacli") + testingConfig := map[string]string{ + "access_token": "test_token", + "client_id": "test_client_id", + "client_secret": "test_client_secret", + "insecure": "true", + "refresh_token": "test_refresh_token", + "token_url": "test_token_url", + "url": "test_url", + "fedramp": "true", + } + for key, value := range testingConfig { + _, err := ocmService.SetConfig(key, value) + Expect(err).To(BeNil()) + } + By("Check if the set operation works") + for key, value := range testingConfig { + config, err := ocmService.GetConfig(key) + configString := strings.TrimSuffix(config.String(), "\n") + Expect(err).To(BeNil()) + Expect(configString).To(Equal(value)) + } + By("Set not supported config via rosacli") + out, err := ocmService.SetConfig("scopes", "test_scopes") + Expect(err).ToNot(BeNil()) + Expect(out.String()).To(ContainSubstring("Setting scopes is unsupported")) + }) + }) diff --git a/tests/utils/exec/rosacli/ocm_resource_service.go b/tests/utils/exec/rosacli/ocm_resource_service.go index 4a70d4576c..b899e62c49 100644 --- a/tests/utils/exec/rosacli/ocm_resource_service.go +++ b/tests/utils/exec/rosacli/ocm_resource_service.go @@ -73,6 +73,9 @@ type OCMResourceService interface { Token(flags ...string) (bytes.Buffer, error) UpgradeRoles(flags ...string) (bytes.Buffer, error) + + GetConfig(flags ...string) (bytes.Buffer, error) + SetConfig(flags ...string) (bytes.Buffer, error) } type ocmResourceService struct { @@ -677,3 +680,17 @@ func (ors *ocmResourceService) UpgradeRoles(flags ...string) (bytes.Buffer, erro upgradeAccountRole = upgradeAccountRole.Cmd("upgrade", "roles").CmdFlags(flags...) return upgradeAccountRole.Run() } + +// run `rosa config get` command +func (ors *ocmResourceService) GetConfig(flags ...string) (bytes.Buffer, error) { + getConfig := ors.client.Runner + getConfig = getConfig.Cmd("config", "get").CmdFlags(flags...) + return getConfig.Run() +} + +// run `rosa config set` command +func (ors *ocmResourceService) SetConfig(flags ...string) (bytes.Buffer, error) { + setConfig := ors.client.Runner + setConfig = setConfig.Cmd("config", "set").CmdFlags(flags...) + return setConfig.Run() +}