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