From 05bb165ffaf886a775cfc951b6d3ca62eb36f51b Mon Sep 17 00:00:00 2001 From: Fredrik Larsson Date: Mon, 22 May 2023 16:17:36 +0200 Subject: [PATCH] Run tests via a Mock targetNetFilter instead of the actual one --- source/targetfiltersource_test.go | 82 ++++++++++--------------------- 1 file changed, 26 insertions(+), 56 deletions(-) diff --git a/source/targetfiltersource_test.go b/source/targetfiltersource_test.go index 207e8959fa..19e552799b 100644 --- a/source/targetfiltersource_test.go +++ b/source/targetfiltersource_test.go @@ -26,6 +26,26 @@ import ( "sigs.k8s.io/external-dns/endpoint" ) +type mockTargetNetFilter struct { + targets map[string]bool +} + +func NewMockTargetNetFilter(targets []string) endpoint.TargetFilterInterface { + targetMap := make(map[string]bool) + for _, target := range targets { + targetMap[target] = true + } + return &mockTargetNetFilter{targets: targetMap} +} + +func (m *mockTargetNetFilter) Match(target string) bool { + return m.targets[target] +} + +func (m *mockTargetNetFilter) IsConfigured() bool { + return true +} + // echoSource is a Source that returns the endpoints passed in on creation. type echoSource struct { endpoints []*endpoint.Endpoint @@ -66,7 +86,6 @@ func TestEchoSourceReturnGivenSources(t *testing.T) { } } - func TestTargetFilterSource(t *testing.T) { t.Parallel() @@ -89,54 +108,8 @@ func TestTargetFilterSourceEndpoints(t *testing.T) { expected []*endpoint.Endpoint }{ { - title: "no filters", - filters: endpoint.NewTargetNetFilter(nil), - endpoints: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "A", "1.2.3.4")}, - expected: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "A", "1.2.3.4")}, - }, - { - title: "filter matched specific", - filters: endpoint.NewTargetNetFilter([]string{"1.2.3.4"}), - endpoints: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "A", "1.2.3.4")}, - expected: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "A", "1.2.3.4")}, - }, - { - title: "filter matched net", - filters: endpoint.NewTargetNetFilter([]string{"1.2.3.0/24"}), - endpoints: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "A", "1.2.3.4")}, - expected: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "A", "1.2.3.4")}, - }, - { - title: "filter not matched specific", - filters: endpoint.NewTargetNetFilter([]string{"1.2.3.5/32"}), - endpoints: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "A", "1.2.3.4")}, - expected: []*endpoint.Endpoint{}, - }, - { - title: "filter not matched net", - filters: endpoint.NewTargetNetFilter([]string{"1.2.4.0/24"}), - endpoints: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "A", "1.2.3.4")}, - expected: []*endpoint.Endpoint{}, - }, - { - title: "filter not matched CNAME endpoint", - filters: endpoint.NewTargetNetFilter([]string{"1.2.4.0/24"}), - endpoints: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "CNAME", "foo.bar")}, - expected: []*endpoint.Endpoint{}, - }, - { - title: "filter matched one of two", - filters: endpoint.NewTargetNetFilter([]string{"1.2.4.0/24"}), - endpoints: []*endpoint.Endpoint{ - endpoint.NewEndpoint("foo", "CNAME", "foo.bar"), - endpoint.NewEndpoint("foo", "A", "1.2.4.1")}, - expected: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "A", "1.2.4.1")}, - }, - { - title: "filter exclusion all", - filters: endpoint.NewTargetNetFilterWithExclusions( - []string{""}, - []string{"1.0.0.0/8"}), + title: "filter exclusion all", + filters: NewMockTargetNetFilter([]string{}), endpoints: []*endpoint.Endpoint{ endpoint.NewEndpoint("foo", "A", "1.2.3.4"), endpoint.NewEndpoint("foo", "A", "1.2.3.5"), @@ -146,19 +119,16 @@ func TestTargetFilterSourceEndpoints(t *testing.T) { expected: []*endpoint.Endpoint{}, }, { - title: "filter exclude internal net", - filters: endpoint.NewTargetNetFilterWithExclusions( - []string{""}, - []string{"10.0.0.0/8"}), + title: "filter exclude internal net", + filters: NewMockTargetNetFilter([]string{"8.8.8.8"}), endpoints: []*endpoint.Endpoint{ endpoint.NewEndpoint("foo", "A", "10.0.0.1"), endpoint.NewEndpoint("foo", "A", "8.8.8.8")}, expected: []*endpoint.Endpoint{endpoint.NewEndpoint("foo", "A", "8.8.8.8")}, }, { - title: "filter only internal", - filters: endpoint.NewTargetNetFilterWithExclusions( - []string{"10.0.0.0/8"}, []string{}), + title: "filter only internal", + filters: NewMockTargetNetFilter([]string{"10.0.0.1"}), endpoints: []*endpoint.Endpoint{ endpoint.NewEndpoint("foo", "A", "10.0.0.1"), endpoint.NewEndpoint("foo", "A", "8.8.8.8")},