Skip to content

Commit 555895f

Browse files
committed
e2e tests for catalog watch
Signed-off-by: Ankita Thomas <[email protected]>
1 parent 727e14d commit 555895f

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

test/e2e/install_test.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,75 @@ var _ = Describe("Operator Install", func() {
9393
g.Expect(bd.Status.Conditions[0].Reason).To(Equal("UnpackSuccessful"))
9494
g.Expect(bd.Status.Conditions[1].Reason).To(Equal("InstallationSucceeded"))
9595
}).WithTimeout(defaultTimeout).WithPolling(defaultPoll).Should(Succeed())
96+
})
97+
AfterEach(func() {
98+
err := c.Delete(ctx, operatorCatalog)
99+
Expect(err).ToNot(HaveOccurred())
100+
err = c.Delete(ctx, operator)
101+
Expect(err).ToNot(HaveOccurred())
102+
})
103+
})
104+
When("resolving for an unavailable operator package", func() {
105+
BeforeEach(func() {
106+
ctx = context.Background()
107+
pkgName = "argocd-operator"
108+
operatorName = fmt.Sprintf("operator-%s", rand.String(8))
109+
operator = &operatorv1alpha1.Operator{
110+
ObjectMeta: metav1.ObjectMeta{
111+
Name: operatorName,
112+
},
113+
Spec: operatorv1alpha1.OperatorSpec{
114+
PackageName: pkgName,
115+
},
116+
}
117+
operatorCatalog = &catalogd.CatalogSource{
118+
ObjectMeta: metav1.ObjectMeta{
119+
Name: "test-catalog",
120+
},
121+
Spec: catalogd.CatalogSourceSpec{
122+
// (TODO): Set up a local image registry, and build and store a test catalog in it
123+
// to use in the test suite
124+
Image: "quay.io/operatorhubio/catalog:latest",
125+
},
126+
}
127+
})
128+
129+
It("resolves again when a new catalog is available", func() {
130+
By("creating the Operator resource")
131+
err := c.Create(ctx, operator)
132+
Expect(err).ToNot(HaveOccurred())
96133

134+
By("failing to find Operator during resolution")
135+
Eventually(func(g Gomega) {
136+
err = c.Get(ctx, types.NamespacedName{Name: operator.Name}, operator)
137+
g.Expect(err).ToNot(HaveOccurred())
138+
g.Expect(len(operator.Status.Conditions)).To(Equal(2))
139+
cond := apimeta.FindStatusCondition(operator.Status.Conditions, operatorv1alpha1.TypeResolved)
140+
g.Expect(cond).ToNot(BeNil())
141+
g.Expect(cond.Status).To(Equal(metav1.ConditionFalse))
142+
g.Expect(cond.Reason).To(Equal(operatorv1alpha1.ReasonResolutionFailed))
143+
g.Expect(cond.Message).To(Equal(fmt.Sprintf("package '%s' not found", pkgName)))
144+
}).WithTimeout(defaultTimeout).WithPolling(defaultPoll).Should(Succeed())
145+
146+
By("creating an Operator catalog with the desired package")
147+
err = c.Create(ctx, operatorCatalog)
148+
Expect(err).ToNot(HaveOccurred())
149+
Eventually(func(g Gomega) {
150+
err = c.Get(ctx, types.NamespacedName{Name: "test-catalog"}, operatorCatalog)
151+
g.Expect(err).ToNot(HaveOccurred())
152+
g.Expect(len(operatorCatalog.Status.Conditions)).To(Equal(1))
153+
g.Expect(operatorCatalog.Status.Conditions[0].Message).To(Equal("catalog contents have been unpacked and are available on cluster"))
154+
}).WithTimeout(5 * time.Minute).WithPolling(defaultPoll).Should(Succeed())
155+
156+
By("eventually installing the package successfully")
157+
Eventually(func(g Gomega) {
158+
bd := rukpakv1alpha1.BundleDeployment{}
159+
err = c.Get(ctx, types.NamespacedName{Name: operatorName}, &bd)
160+
g.Expect(err).ToNot(HaveOccurred())
161+
g.Expect(len(bd.Status.Conditions)).To(Equal(2))
162+
g.Expect(bd.Status.Conditions[0].Reason).To(Equal("UnpackSuccessful"))
163+
g.Expect(bd.Status.Conditions[1].Reason).To(Equal("InstallationSucceeded"))
164+
}).WithTimeout(defaultTimeout).WithPolling(defaultPoll).Should(Succeed())
97165
})
98166
AfterEach(func() {
99167
err := c.Delete(ctx, operatorCatalog)

0 commit comments

Comments
 (0)