github.com/operator-framework/operator-lifecycle-manager@v0.30.0/test/e2e/magic_catalog_test.go (about)

     1  package e2e
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"path/filepath"
     7  
     8  	. "github.com/onsi/ginkgo/v2"
     9  	. "github.com/onsi/gomega"
    10  	"github.com/operator-framework/operator-lifecycle-manager/test/e2e/ctx"
    11  	corev1 "k8s.io/api/core/v1"
    12  	"k8s.io/apimachinery/pkg/types"
    13  	"sigs.k8s.io/controller-runtime/pkg/client"
    14  )
    15  
    16  var _ = Describe("MagicCatalog", func() {
    17  	var (
    18  		generatedNamespace corev1.Namespace
    19  		c                  client.Client
    20  	)
    21  
    22  	BeforeEach(func() {
    23  		c = ctx.Ctx().Client()
    24  		generatedNamespace = SetupGeneratedTestNamespace(genName("magic-catalog-e2e-"))
    25  	})
    26  
    27  	AfterEach(func() {
    28  		TeardownNamespace(generatedNamespace.GetName())
    29  	})
    30  
    31  	It("Deploys and Undeploys a File-based Catalog", func() {
    32  		// create dependencies
    33  		const catalogName = "test"
    34  		namespace := generatedNamespace.GetName()
    35  		provider, err := NewFileBasedFiledBasedCatalogProvider(filepath.Join(testdataDir, "magiccatalog/fbc_catalog.json"))
    36  		Expect(err).To(BeNil())
    37  
    38  		// create and deploy and undeploy the magic catalog
    39  		magicCatalog := NewMagicCatalog(c, namespace, catalogName, provider)
    40  
    41  		// deployment blocks until the catalog source has reached a READY status
    42  		Expect(magicCatalog.DeployCatalog(context.Background())).To(BeNil())
    43  		Expect(magicCatalog.UndeployCatalog(context.Background())).To(BeNil())
    44  	})
    45  
    46  	When("an existing magic catalog exists", func() {
    47  		var (
    48  			mc          *MagicCatalog
    49  			catalogName string
    50  		)
    51  
    52  		BeforeEach(func() {
    53  			provider, err := NewFileBasedFiledBasedCatalogProvider(filepath.Join(testdataDir, "magiccatalog/fbc_initial.yaml"))
    54  			Expect(err).To(BeNil())
    55  
    56  			catalogName = genName("mc-e2e-catalog-")
    57  
    58  			mc = NewMagicCatalog(c, generatedNamespace.GetName(), catalogName, provider)
    59  			Expect(mc.DeployCatalog(context.Background())).To(BeNil())
    60  		})
    61  
    62  		AfterEach(func() {
    63  			Expect(mc.UndeployCatalog(context.Background())).To(BeNil())
    64  		})
    65  
    66  		It("should succeed when the magic catalog is updated", func() {
    67  			updatedProvider, err := NewFileBasedFiledBasedCatalogProvider(filepath.Join(testdataDir, "magiccatalog/fbc_updated.yaml"))
    68  			Expect(err).To(BeNil())
    69  
    70  			updatedMC := NewMagicCatalog(c, generatedNamespace.GetName(), catalogName, updatedProvider)
    71  			Expect(updatedMC.UpdateCatalog(context.Background(), updatedProvider)).To(BeNil())
    72  
    73  			Eventually(func() (*corev1.ConfigMap, error) {
    74  				cm := &corev1.ConfigMap{}
    75  				err := c.Get(context.Background(), types.NamespacedName{
    76  					Name:      fmt.Sprintf("%s-configmap", catalogName),
    77  					Namespace: generatedNamespace.GetName(),
    78  				}, cm)
    79  				if err != nil {
    80  					return nil, err
    81  				}
    82  				return cm, nil
    83  			}).Should(And(
    84  				Not(BeNil()),
    85  				WithTransform(func(c *corev1.ConfigMap) string {
    86  					data, ok := c.Data["catalog.json"]
    87  					if !ok {
    88  						return ""
    89  					}
    90  					return data
    91  				}, ContainSubstring(`---
    92  schema: olm.package
    93  name: test-package
    94  defaultChannel: stable
    95  ---
    96  schema: olm.channel
    97  package: test-package
    98  name: stable
    99  entries:
   100    - name: busybox.v2.0.0
   101      replaces: busybox.v1.0.0
   102  ---
   103  schema: olm.bundle
   104  name: busybox.v2.0.0
   105  package: test-package
   106  image: quay.io/olmtest/busybox-bundle:2.0.0
   107  properties:
   108    - type: olm.gvk
   109      value:
   110        group: example.com
   111        kind: TestA
   112        version: v1alpha1
   113    - type: olm.package
   114      value:
   115        packageName: test-package
   116        version: 1.0.0
   117  `)),
   118  			))
   119  		})
   120  		It("should fail when the magic catalog is re-created", func() {
   121  			Expect(mc.DeployCatalog(context.Background())).ToNot(BeNil())
   122  		})
   123  	})
   124  })