Fix potential issue in odo version nightly tests if user does not have permission to get the OpenShift version (#6933)

* Fix issues in the tests if user does not have permission to see the OpenShift platform version

This happened on the nightly jobs running on Prow,
which makes us use a developer account with some restrictions.

* Rename 'helper.JsonSatisfies' into 'helper.JsonStatisfiesAll' to make the intent clearer
This commit is contained in:
Armel Soro
2023-06-26 17:46:10 +02:00
committed by GitHub
parent 94e32303bd
commit bfa125e4b0
2 changed files with 23 additions and 11 deletions

View File

@@ -5,7 +5,6 @@ import (
"context"
"encoding/json"
"fmt"
"github.com/onsi/gomega/types"
"os"
"path/filepath"
"regexp"
@@ -15,6 +14,8 @@ import (
"testing"
"time"
"github.com/onsi/gomega/types"
"github.com/tidwall/gjson"
"github.com/redhat-developer/odo/pkg/config"
@@ -325,8 +326,8 @@ func JsonPathContentContain(json string, path string, value string) {
Expect(result.String()).To(ContainSubstring(value), fmt.Sprintf("content of path %q should contain %q but is %q", path, value, result.String()))
}
// JsonPathSatisfies expects content of the path to satisfy all the matchers passed to it
func JsonPathSatisfies(json string, path string, matchers ...types.GomegaMatcher) {
// JsonPathSatisfiesAll expects content of the path to satisfy all the matchers passed to it
func JsonPathSatisfiesAll(json string, path string, matchers ...types.GomegaMatcher) {
result := gjson.Get(json, path)
Expect(result.String()).Should(SatisfyAll(matchers...))
}

View File

@@ -3,6 +3,7 @@ package integration
import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/redhat-developer/odo/tests/helper"
)
@@ -141,7 +142,12 @@ var _ = Describe("odo generic", func() {
serverURL := oc.GetCurrentServerURL()
Expect(odoVersion).Should(ContainSubstring("Server: " + serverURL))
if !helper.IsKubernetesCluster() {
Expect(odoVersion).Should(ContainSubstring("OpenShift: "))
ocpMatcher := ContainSubstring("OpenShift: ")
if serverVersion := commonVar.CliRunner.GetVersion(); serverVersion == "" {
// Might indicate a user permission error on certain clusters (observed with a developer account on Prow nightly jobs)
ocpMatcher = Not(ocpMatcher)
}
Expect(odoVersion).Should(ocpMatcher)
}
}
})
@@ -149,16 +155,21 @@ var _ = Describe("odo generic", func() {
By("checking the JSON output", func() {
odoVersion = helper.Cmd("odo", "version", "-o", "json").ShouldPass().Out()
Expect(helper.IsJSON(odoVersion)).To(BeTrue())
helper.JsonPathSatisfies(odoVersion, "version", MatchRegexp(reJSONVersion))
helper.JsonPathSatisfiesAll(odoVersion, "version", MatchRegexp(reJSONVersion))
helper.JsonPathExist(odoVersion, "gitCommit")
if podman {
helper.JsonPathSatisfies(odoVersion, "podman.client.version", MatchRegexp(reJSONVersion), Equal(helper.GetPodmanVersion()))
helper.JsonPathSatisfiesAll(odoVersion, "podman.client.version", MatchRegexp(reJSONVersion), Equal(helper.GetPodmanVersion()))
} else {
helper.JsonPathSatisfies(odoVersion, "cluster.kubernetes.version", MatchRegexp(reJSONVersion))
helper.JsonPathSatisfiesAll(odoVersion, "cluster.kubernetes.version", MatchRegexp(reJSONVersion))
serverURL := oc.GetCurrentServerURL()
helper.JsonPathContentIs(odoVersion, "cluster.serverURL", serverURL)
if !helper.IsKubernetesCluster() {
helper.JsonPathSatisfies(odoVersion, "cluster.openshift", Not(BeEmpty()))
m := BeEmpty()
if serverVersion := commonVar.CliRunner.GetVersion(); serverVersion != "" {
// A blank serverVersion might indicate a user permission error on certain clusters (observed with a developer account on Prow nightly jobs)
m = Not(m)
}
helper.JsonPathSatisfiesAll(odoVersion, "cluster.openshift", m)
}
}
})
@@ -194,10 +205,10 @@ var _ = Describe("odo generic", func() {
By("checking JSON output", func() {
odoVersion := helper.Cmd("odo", "version", "--client", "-o", "json").ShouldPass().Out()
Expect(helper.IsJSON(odoVersion)).To(BeTrue())
helper.JsonPathSatisfies(odoVersion, "version", MatchRegexp(reJSONVersion))
helper.JsonPathSatisfiesAll(odoVersion, "version", MatchRegexp(reJSONVersion))
helper.JsonPathExist(odoVersion, "gitCommit")
helper.JsonPathSatisfies(odoVersion, "cluster", BeEmpty())
helper.JsonPathSatisfies(odoVersion, "podman", BeEmpty())
helper.JsonPathSatisfiesAll(odoVersion, "cluster", BeEmpty())
helper.JsonPathSatisfiesAll(odoVersion, "podman", BeEmpty())
})
})
})