|
|
|
|
@ -74,13 +74,25 @@ func TestWildcardDomains(t *testing.T) { |
|
|
|
|
a.UpdateDomains([]string{"*.example.com"}) |
|
|
|
|
a.ObserveDNSResponse(dnsResponse("foo.example.com.", "192.0.0.8")) |
|
|
|
|
if got, want := rc.routes, []netip.Prefix{netip.MustParsePrefix("192.0.0.8/32")}; !slices.Equal(got, want) { |
|
|
|
|
t.Errorf("got %v; want %v", got, want) |
|
|
|
|
t.Errorf("routes: got %v; want %v", got, want) |
|
|
|
|
} |
|
|
|
|
if got, want := a.wildcards, []string{"example.com"}; !slices.Equal(got, want) { |
|
|
|
|
t.Errorf("wildcards: got %v; want %v", got, want) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
a.UpdateDomains([]string{"*.example.com", "example.com"}) |
|
|
|
|
if _, ok := a.domains["foo.example.com"]; !ok { |
|
|
|
|
t.Errorf("expected foo.example.com to be preserved in domains due to wildcard") |
|
|
|
|
} |
|
|
|
|
if got, want := a.wildcards, []string{"example.com"}; !slices.Equal(got, want) { |
|
|
|
|
t.Errorf("wildcards: got %v; want %v", got, want) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// There was an early regression where the wildcard domain was added repeatedly, this guards against that.
|
|
|
|
|
a.UpdateDomains([]string{"*.example.com", "example.com"}) |
|
|
|
|
if len(a.wildcards) != 1 { |
|
|
|
|
t.Errorf("expected only one wildcard domain, got %v", a.wildcards) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// dnsResponse is a test helper that creates a DNS response buffer for the given domain and address
|
|
|
|
|
|