Skip to content

Commit b269322

Browse files
Add needsUpdate and err fields on mockFinalizer struct for customizations
Signed-off-by: Rashmi Gottipati <[email protected]>
1 parent 9f61089 commit b269322

File tree

1 file changed

+66
-2
lines changed

1 file changed

+66
-2
lines changed

pkg/finalizer/finalizer_test.go

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package finalizer
22

33
import (
44
"context"
5+
"fmt"
56
"testing"
67

78
. "github.com/onsi/ginkgo"
@@ -12,10 +13,13 @@ import (
1213
"sigs.k8s.io/controller-runtime/pkg/envtest/printer"
1314
)
1415

15-
type mockFinalizer struct{}
16+
type mockFinalizer struct {
17+
needsUpdate bool
18+
err error
19+
}
1620

1721
func (f mockFinalizer) Finalize(context.Context, client.Object) (needsUpdate bool, err error) {
18-
return true, nil
22+
return f.needsUpdate, f.err
1923
}
2024
func TestFinalizer(t *testing.T) {
2125
RegisterFailHandler(Fail)
@@ -129,5 +133,65 @@ var _ = Describe("TestFinalizer", func() {
129133
Expect(err).To(BeNil())
130134
Expect(needsUpdate).To(BeTrue())
131135
})
136+
137+
It("should return needsUpdate as false and a non-nil error", func() {
138+
now := metav1.Now()
139+
pod.DeletionTimestamp = &now
140+
pod.Finalizers = []string{"finalizers.sigs.k8s.io/testfinalizer"}
141+
142+
f.needsUpdate = false
143+
f.err = fmt.Errorf("finalizer failed for %q", pod.Finalizers[0])
144+
145+
err = finalizers.Register("finalizers.sigs.k8s.io/testfinalizer", f)
146+
Expect(err).To(BeNil())
147+
148+
needsUpdate, err := finalizers.Finalize(context.TODO(), pod)
149+
Expect(err).ToNot(BeNil())
150+
Expect(err.Error()).To(ContainSubstring("finalizer failed"))
151+
Expect(needsUpdate).To(BeFalse())
152+
})
153+
154+
It("should return expected needsUpdate and error values when registering multiple finalizers", func() {
155+
now := metav1.Now()
156+
pod.DeletionTimestamp = &now
157+
pod.Finalizers = []string{
158+
"finalizers.sigs.k8s.io/testfinalizer1",
159+
"finalizers.sigs.k8s.io/testfinalizer2",
160+
"finalizers.sigs.k8s.io/testfinalizer3",
161+
}
162+
163+
// registering multiple finalizers with different return values
164+
// test for needsUpdate as true, and nil error
165+
f.needsUpdate = true
166+
f.err = nil
167+
err = finalizers.Register("finalizers.sigs.k8s.io/testfinalizer1", f)
168+
Expect(err).To(BeNil())
169+
170+
result, err := finalizers.Finalize(context.TODO(), pod)
171+
Expect(err).To(BeNil())
172+
Expect(result).To(BeTrue())
173+
174+
// test for needsUpdate as false, and non-nil error
175+
f.needsUpdate = false
176+
f.err = fmt.Errorf("finalizer failed")
177+
err = finalizers.Register("finalizers.sigs.k8s.io/testfinalizer2", f)
178+
Expect(err).To(BeNil())
179+
180+
result, err = finalizers.Finalize(context.TODO(), pod)
181+
Expect(err).ToNot(BeNil())
182+
Expect(err.Error()).To(ContainSubstring("finalizer failed"))
183+
Expect(result).To(BeFalse())
184+
185+
// test for needsUpdate as true, and non-nil error
186+
f.needsUpdate = true
187+
f.err = fmt.Errorf("finalizer failed")
188+
err = finalizers.Register("finalizers.sigs.k8s.io/testfinalizer3", f)
189+
Expect(err).To(BeNil())
190+
191+
result, err = finalizers.Finalize(context.TODO(), pod)
192+
Expect(err).ToNot(BeNil())
193+
Expect(err.Error()).To(ContainSubstring("finalizer failed"))
194+
Expect(result).To(BeTrue())
195+
})
132196
})
133197
})

0 commit comments

Comments
 (0)