github.com/redhat-appstudio/e2e-tests@v0.0.0-20240520140907-9709f6f59323/tests/release/service/missing_release_plan_and_admission.go (about)

     1  package service
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/redhat-appstudio/application-api/api/v1alpha1"
     7  	tektonutils "github.com/redhat-appstudio/release-service/tekton/utils"
     8  
     9  	releasecommon "github.com/redhat-appstudio/e2e-tests/tests/release"
    10  
    11  	. "github.com/onsi/ginkgo/v2"
    12  	. "github.com/onsi/gomega"
    13  	"github.com/redhat-appstudio/e2e-tests/pkg/constants"
    14  	"github.com/redhat-appstudio/e2e-tests/pkg/framework"
    15  	"github.com/redhat-appstudio/e2e-tests/pkg/utils"
    16  	releaseApi "github.com/redhat-appstudio/release-service/api/v1alpha1"
    17  )
    18  
    19  var _ = framework.ReleaseServiceSuiteDescribe("[HACBS-2360] Release CR fails when missing ReleasePlan and ReleasePlanAdmission.", Label("release-service", "release-neg", "negMissingReleasePlan", "HACBS"), func() {
    20  	defer GinkgoRecover()
    21  
    22  	var fw *framework.Framework
    23  	var err error
    24  
    25  	var devNamespace, managedNamespace string
    26  
    27  	var releaseCR *releaseApi.Release
    28  	var snapshotName = "snapshot"
    29  	var destinationReleasePlanAdmissionName = "sre-production"
    30  	var releaseName = "release"
    31  
    32  	AfterEach(framework.ReportFailure(&fw))
    33  
    34  	BeforeAll(func() {
    35  		// Initialize the tests controllers
    36  		fw, err = framework.NewFramework(utils.GetGeneratedNamespace("neg-rp-dev"))
    37  		Expect(err).NotTo(HaveOccurred())
    38  		devNamespace = fw.UserNamespace
    39  
    40  		// Create the managed namespace
    41  		managedNamespace = utils.GetGeneratedNamespace("neg-rp-managed")
    42  		_, err = fw.AsKubeAdmin.CommonController.CreateTestNamespace(managedNamespace)
    43  		Expect(err).NotTo(HaveOccurred(), "Error when creating namespace '%s': %v", managedNamespace, err)
    44  
    45  		_, err = fw.AsKubeAdmin.IntegrationController.CreateSnapshotWithComponents(snapshotName, "", releasecommon.ApplicationName, devNamespace, []v1alpha1.SnapshotComponent{})
    46  		Expect(err).NotTo(HaveOccurred())
    47  
    48  		_, err = fw.AsKubeAdmin.ReleaseController.CreateReleasePlanAdmission(destinationReleasePlanAdmissionName, managedNamespace, "", devNamespace, releasecommon.ReleaseStrategyPolicy, constants.DefaultPipelineServiceAccount, []string{releasecommon.ApplicationName}, true, &tektonutils.PipelineRef{
    49  			Resolver: "git",
    50  			Params: []tektonutils.Param{
    51  				{Name: "url", Value: releasecommon.RelSvcCatalogURL},
    52  				{Name: "revision", Value: releasecommon.RelSvcCatalogRevision},
    53  				{Name: "pathInRepo", Value: "pipelines/e2e/e2e.yaml"},
    54  			},
    55  		}, nil)
    56  		Expect(err).NotTo(HaveOccurred())
    57  		_, err = fw.AsKubeAdmin.ReleaseController.CreateRelease(releaseName, devNamespace, snapshotName, releasecommon.SourceReleasePlanName)
    58  		Expect(err).NotTo(HaveOccurred())
    59  	})
    60  
    61  	AfterAll(func() {
    62  		if !CurrentSpecReport().Failed() {
    63  			Expect(fw.AsKubeAdmin.CommonController.DeleteNamespace(managedNamespace)).NotTo(HaveOccurred())
    64  			Expect(fw.SandboxController.DeleteUserSignup(fw.UserName)).To(BeTrue())
    65  		}
    66  	})
    67  
    68  	var _ = Describe("post-release verification.", func() {
    69  		It("missing ReleasePlan makes a Release CR set as failed in both IsReleased and IsValid with a proper message to user.", func() {
    70  			Eventually(func() bool {
    71  				releaseCR, err = fw.AsKubeAdmin.ReleaseController.GetRelease(releaseName, "", devNamespace)
    72  				if releaseCR.HasReleaseFinished() {
    73  					return !(releaseCR.IsValid() && releaseCR.IsReleased()) &&
    74  						strings.Contains(releaseCR.Status.Conditions[0].Message, "Release validation failed")
    75  				}
    76  				return false
    77  			}, releasecommon.ReleaseCreationTimeout, releasecommon.DefaultInterval).Should(BeTrue())
    78  		})
    79  		It("missing ReleasePlanAdmission makes a Release CR set as failed in both IsReleased and IsValid with a proper message to user.", func() {
    80  			Expect(fw.AsKubeAdmin.ReleaseController.DeleteReleasePlanAdmission(destinationReleasePlanAdmissionName, managedNamespace, false)).NotTo(HaveOccurred())
    81  			Eventually(func() bool {
    82  				releaseCR, err = fw.AsKubeAdmin.ReleaseController.GetRelease(releaseName, "", devNamespace)
    83  				if releaseCR.HasReleaseFinished() {
    84  					return !(releaseCR.IsValid() && releaseCR.IsReleased()) &&
    85  						strings.Contains(releaseCR.Status.Conditions[0].Message, "Release validation failed")
    86  				}
    87  				return false
    88  			}, releasecommon.ReleaseCreationTimeout, releasecommon.DefaultInterval).Should(BeTrue())
    89  		})
    90  	})
    91  })