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 })