@@ -23,9 +23,13 @@ import (
2323 "testing"
2424
2525 log "github.com/sirupsen/logrus"
26+ "github.com/stretchr/testify/assert"
27+ "github.com/stretchr/testify/mock"
2628 "github.com/stretchr/testify/require"
2729 corev1 "k8s.io/api/core/v1"
2830 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
31+ corev1lister "k8s.io/client-go/listers/core/v1"
32+ "k8s.io/client-go/tools/cache"
2933
3034 "sigs.k8s.io/external-dns/endpoint"
3135 "sigs.k8s.io/external-dns/internal/testutils"
@@ -909,6 +913,39 @@ func TestPodSourceLogs(t *testing.T) {
909913 }
910914}
911915
916+ func TestPodSource_AddEventHandler (t * testing.T ) {
917+ fakeInformer := new (fakePodInformer )
918+ inf := testInformer {}
919+ fakeInformer .On ("Informer" ).Return (& inf )
920+
921+ pSource := & podSource {
922+ podInformer : fakeInformer ,
923+ }
924+
925+ handlerCalled := false
926+ handler := func () { handlerCalled = true }
927+
928+ pSource .AddEventHandler (t .Context (), handler )
929+
930+ fakeInformer .AssertNumberOfCalls (t , "Informer" , 1 )
931+ assert .False (t , handlerCalled )
932+ assert .Equal (t , 1 , inf .times )
933+ }
934+
935+ type fakePodInformer struct {
936+ mock.Mock
937+ informer cache.SharedIndexInformer
938+ }
939+
940+ func (f * fakePodInformer ) Informer () cache.SharedIndexInformer {
941+ args := f .Called ()
942+ return args .Get (0 ).(cache.SharedIndexInformer )
943+ }
944+
945+ func (f * fakePodInformer ) Lister () corev1lister.PodLister {
946+ return corev1lister .NewPodLister (f .Informer ().GetIndexer ())
947+ }
948+
912949func nodesFixturesIPv6 () []* corev1.Node {
913950 return []* corev1.Node {
914951 {
0 commit comments