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