diff --git a/tests/release/pipelines/push_to_external_registry.go b/tests/release/pipelines/push_to_external_registry.go index 067347ff4..a6a243d97 100644 --- a/tests/release/pipelines/push_to_external_registry.go +++ b/tests/release/pipelines/push_to_external_registry.go @@ -168,14 +168,13 @@ var _ = framework.ReleasePipelinesSuiteDescribe("Push to external registry", Lab }) It("tests if the image was pushed to quay", func() { - //retrieve the component to get the latest data + // retrieve the component to get the latest data component, err := fw.AsKubeAdmin.HasController.GetComponent(component.GetName(), devNamespace) Expect(err).ShouldNot(HaveOccurred(), fmt.Sprintf("could not get component %s in the %s namespace", component.GetName(), devNamespace)) containerImageDigest := strings.Split(component.Spec.ContainerImage, "@")[1] - - imageDigest, err := releasecommon.GetDigestWithTagInQuay(releasecommon.ReleasedImagePushRepo + ":latest") - Expect(err).ShouldNot(HaveOccurred(), fmt.Sprintf("failed while getting Digest for quay image %s with error: %+v", releasecommon.ReleasedImagePushRepo+":latest", err)) - Expect(imageDigest).To(Equal(containerImageDigest)) + digestExist, err := releasecommon.DoesDigestExistInQuay(releasecommon.ReleasedImagePushRepo, containerImageDigest) + Expect(err).ShouldNot(HaveOccurred(), fmt.Sprintf("failed while getting Digest for quay image %s with error: %+v", releasecommon.ReleasedImagePushRepo+"@"+containerImageDigest, err)) + Expect(digestExist).To(BeTrue()) }) It("verifies that a Release is marked as succeeded.", func() { diff --git a/tests/release/quay.go b/tests/release/quay.go index 1da691b64..318218a39 100644 --- a/tests/release/quay.go +++ b/tests/release/quay.go @@ -11,30 +11,29 @@ import ( var ( quayApiUrl = "https://quay.io/api/v1" - quayOrg = utils.GetEnv("IMAGE_CONTROLLER_QUAY_ORG", "hacbs-release-tests") + // quayOrg = utils.GetEnv("IMAGE_CONTROLLER_QUAY_ORG", "hacbs-release-tests") quayToken = utils.GetEnv("IMAGE_CONTROLLER_QUAY_ORG_TOKEN", "") quayClient = quay.NewQuayClient(&http.Client{Transport: &http.Transport{}}, quayToken, quayApiUrl) ) -// imageURL format example: quay.io/redhat-appstudio-qe/devfile-go-rhtap-uvv7:latest -func GetDigestWithTagInQuay(imageURL string) (string, error) { - urlParts := strings.Split(imageURL, ":") - if len(urlParts) != 2 { - return "", fmt.Errorf("image URL %s has incorrect format", imageURL) - } - repoParts := strings.Split(urlParts[0], "/") +// repoURL format example: quay.io/redhat-appstudio-qe/dcmetromap +func DoesDigestExistInQuay(repoURL string, digest string) (bool, error) { + repoParts := strings.Split(repoURL, "/") if len(repoParts) <= 2 { - return "", fmt.Errorf("image URL %s is not complete", imageURL) + return false, fmt.Errorf("repo URL %s is not complete", repoURL) } + repoName := strings.Join(repoParts[2:], "/") - tagList, _, err := quayClient.GetTagsFromPage(quayOrg, repoName, 0) + tagList, _, err := quayClient.GetTagsFromPage(repoParts[1], repoName, 0) if err != nil { - return "", err + return false, err } + for _, tag := range tagList { - if tag.Name == urlParts[1] { - return tag.ManifestDigest, nil + if tag.ManifestDigest == digest { + return true, nil } } - return "", fmt.Errorf("no image is found") + + return false, fmt.Errorf("no image is found") }