Skip to content

Commit

Permalink
Add needsUpdate and err fields on mockFinalizer struct for customizat…
Browse files Browse the repository at this point in the history
…ions

Signed-off-by: Rashmi Gottipati <chowdary.grashmi@gmail.com>
  • Loading branch information
rashmigottipati committed May 20, 2021
1 parent 36d238a commit 5e3fa36
Showing 1 changed file with 66 additions and 2 deletions.
68 changes: 66 additions & 2 deletions pkg/finalizer/finalizer_test.go
Expand Up @@ -2,6 +2,7 @@ package finalizer

import (
"context"
"fmt"
"testing"

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

type mockFinalizer struct{}
type mockFinalizer struct {
needsUpdate bool
err error
}

func (f mockFinalizer) Finalize(context.Context, client.Object) (needsUpdate bool, err error) {
return true, nil
return f.needsUpdate, f.err
}
func TestFinalizer(t *testing.T) {
RegisterFailHandler(Fail)
Expand Down Expand Up @@ -129,5 +133,65 @@ var _ = Describe("TestFinalizer", func() {
Expect(err).To(BeNil())
Expect(needsUpdate).To(BeTrue())
})

It("should return needsUpdate as false and a non-nil error", func() {
now := metav1.Now()
pod.DeletionTimestamp = &now
pod.Finalizers = []string{"finalizers.sigs.k8s.io/testfinalizer"}

f.needsUpdate = false
f.err = fmt.Errorf("finalizer failed for %q", pod.Finalizers[0])

err = finalizers.Register("finalizers.sigs.k8s.io/testfinalizer", f)
Expect(err).To(BeNil())

needsUpdate, err := finalizers.Finalize(context.TODO(), pod)
Expect(err).ToNot(BeNil())
Expect(err.Error()).To(ContainSubstring("finalizer failed"))
Expect(needsUpdate).To(BeFalse())
})

It("should return expected needsUpdate and error values when registering multiple finalizers", func() {
now := metav1.Now()
pod.DeletionTimestamp = &now
pod.Finalizers = []string{
"finalizers.sigs.k8s.io/testfinalizer1",
"finalizers.sigs.k8s.io/testfinalizer2",
"finalizers.sigs.k8s.io/testfinalizer3",
}

// registering multiple finalizers with different return values
// test for needsUpdate as true, and nil error
f.needsUpdate = true
f.err = nil
err = finalizers.Register("finalizers.sigs.k8s.io/testfinalizer1", f)
Expect(err).To(BeNil())

result, err := finalizers.Finalize(context.TODO(), pod)
Expect(err).To(BeNil())
Expect(result).To(BeTrue())

// test for needsUpdate as false, and non-nil error
f.needsUpdate = false
f.err = fmt.Errorf("finalizer failed")
err = finalizers.Register("finalizers.sigs.k8s.io/testfinalizer2", f)
Expect(err).To(BeNil())

result, err = finalizers.Finalize(context.TODO(), pod)
Expect(err).ToNot(BeNil())
Expect(err.Error()).To(ContainSubstring("finalizer failed"))
Expect(result).To(BeFalse())

// test for needsUpdate as true, and non-nil error
f.needsUpdate = true
f.err = fmt.Errorf("finalizer failed")
err = finalizers.Register("finalizers.sigs.k8s.io/testfinalizer3", f)
Expect(err).To(BeNil())

result, err = finalizers.Finalize(context.TODO(), pod)
Expect(err).ToNot(BeNil())
Expect(err.Error()).To(ContainSubstring("finalizer failed"))
Expect(result).To(BeTrue())
})
})
})

0 comments on commit 5e3fa36

Please sign in to comment.