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

     1  package service
     2  
     3  import (
     4  	"fmt"
     5  	"time"
     6  
     7  	. "github.com/onsi/ginkgo/v2"
     8  	. "github.com/onsi/gomega"
     9  	"k8s.io/apimachinery/pkg/api/errors"
    10  
    11  	"github.com/redhat-appstudio/e2e-tests/pkg/framework"
    12  	"github.com/redhat-appstudio/e2e-tests/pkg/utils"
    13  	releasecommon "github.com/redhat-appstudio/e2e-tests/tests/release"
    14  	releaseApi "github.com/redhat-appstudio/release-service/api/v1alpha1"
    15  )
    16  
    17  var _ = framework.ReleaseServiceSuiteDescribe("[HACBS-2469]test-releaseplan-owner-ref-added", Label("release-service", "releaseplan-ownerref", "HACBS"), func() {
    18  	defer GinkgoRecover()
    19  	var fw *framework.Framework
    20  	var err error
    21  	var devNamespace string
    22  	var releasePlan *releaseApi.ReleasePlan
    23  	var releasePlanOwnerReferencesTimeout = 1 * time.Minute
    24  	AfterEach(framework.ReportFailure(&fw))
    25  
    26  	BeforeAll(func() {
    27  		fw, err = framework.NewFramework(utils.GetGeneratedNamespace("rp-ownerref"))
    28  		Expect(err).NotTo(HaveOccurred())
    29  		devNamespace = fw.UserNamespace
    30  
    31  		_, err = fw.AsKubeAdmin.HasController.CreateApplication(releasecommon.ApplicationNameDefault, devNamespace)
    32  		Expect(err).NotTo(HaveOccurred())
    33  
    34  		_, err = fw.AsKubeAdmin.ReleaseController.CreateReleasePlan(releasecommon.SourceReleasePlanName, devNamespace, releasecommon.ApplicationNameDefault, "managed", "true", nil)
    35  		Expect(err).NotTo(HaveOccurred())
    36  	})
    37  
    38  	AfterAll(func() {
    39  		if !CurrentSpecReport().Failed() {
    40  			Expect(fw.SandboxController.DeleteUserSignup(fw.UserName)).To(BeTrue())
    41  		}
    42  	})
    43  
    44  	var _ = Describe("ReleasePlan verification", Ordered, func() {
    45  		It("verifies that the ReleasePlan has an owner reference for the application", func() {
    46  			Eventually(func() error {
    47  				releasePlan, err = fw.AsKubeAdmin.ReleaseController.GetReleasePlan(releasecommon.SourceReleasePlanName, devNamespace)
    48  				Expect(err).NotTo(HaveOccurred())
    49  
    50  				if len(releasePlan.OwnerReferences) != 1 {
    51  					return fmt.Errorf("OwnerReference not updated yet for ReleasePlan %s", releasePlan.Name)
    52  				}
    53  
    54  				ownerRef := releasePlan.OwnerReferences[0]
    55  				if ownerRef.Name != releasecommon.ApplicationNameDefault {
    56  					return fmt.Errorf("ReleasePlan %s have OwnerReference Name %s and it's not as expected in Application Name %s", releasePlan.Name, ownerRef.Name, releasecommon.ApplicationNameDefault)
    57  				}
    58  				return nil
    59  			}, releasePlanOwnerReferencesTimeout, releasecommon.DefaultInterval).Should(Succeed(), "timed out waiting for ReleasePlan OwnerReference to be set.")
    60  		})
    61  
    62  		It("verifies that the ReleasePlan is deleted if the application is deleted", func() {
    63  			Expect(fw.AsKubeAdmin.HasController.DeleteApplication(releasecommon.ApplicationNameDefault, devNamespace, true)).To(Succeed())
    64  			Eventually(func() error {
    65  				releasePlan, err = fw.AsKubeAdmin.ReleaseController.GetReleasePlan(releasecommon.SourceReleasePlanName, devNamespace)
    66  				if !errors.IsNotFound(err) {
    67  					return fmt.Errorf("ReleasePlan %s for application %s still not deleted\n", releasePlan.GetName(), releasecommon.ApplicationNameDefault)
    68  				}
    69  				return nil
    70  			}, 1*time.Minute, releasecommon.DefaultInterval).Should(Succeed(), "timed out waiting for ReleasePlan to be deleted in %s namespace", devNamespace)
    71  		})
    72  	})
    73  })