Initial commit
This commit is contained in:
commit
2d98ed1b5d
33 changed files with 4644 additions and 0 deletions
105
checker/resolvers_test.go
Normal file
105
checker/resolvers_test.go
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
package checker
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSelectedResolvers_DefaultExcludesFiltered(t *testing.T) {
|
||||
out := selectedResolvers(false, "all", nil)
|
||||
if len(out) == 0 {
|
||||
t.Fatalf("default selection is empty")
|
||||
}
|
||||
for _, r := range out {
|
||||
if r.Filtered {
|
||||
t.Errorf("filtered resolver %q leaked into default selection", r.ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelectedResolvers_IncludeFiltered(t *testing.T) {
|
||||
withF := selectedResolvers(true, "all", nil)
|
||||
withoutF := selectedResolvers(false, "all", nil)
|
||||
if len(withF) <= len(withoutF) {
|
||||
t.Errorf("includeFiltered=true should add resolvers, got %d vs %d", len(withF), len(withoutF))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelectedResolvers_RegionFilter(t *testing.T) {
|
||||
out := selectedResolvers(false, "eu", nil)
|
||||
if len(out) == 0 {
|
||||
t.Fatalf("eu selection is empty")
|
||||
}
|
||||
for _, r := range out {
|
||||
if r.Region != "eu" {
|
||||
t.Errorf("non-eu resolver %q (%s) leaked in", r.ID, r.Region)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelectedResolvers_AllowlistByID(t *testing.T) {
|
||||
out := selectedResolvers(false, "all", []string{"cloudflare", "9.9.9.10"})
|
||||
ids := make(map[string]bool)
|
||||
for _, r := range out {
|
||||
ids[r.ID] = true
|
||||
}
|
||||
if !ids["cloudflare"] || !ids["quad9-unfiltered"] {
|
||||
t.Errorf("allowlist failed: %v", ids)
|
||||
}
|
||||
if len(out) != 2 {
|
||||
t.Errorf("expected exactly 2 resolvers, got %d", len(out))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelectedResolvers_AllowlistOverridesFilteredAndRegion(t *testing.T) {
|
||||
// quad9 is Filtered + global; allowlist must still pick it.
|
||||
out := selectedResolvers(false, "eu", []string{"quad9"})
|
||||
if len(out) != 1 || out[0].ID != "quad9" {
|
||||
t.Errorf("allowlist should override filtered/region, got %v", out)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRegionLabel(t *testing.T) {
|
||||
cases := map[string]string{
|
||||
"global": "Global / Anycast",
|
||||
"na": "North America",
|
||||
"eu": "Europe",
|
||||
"asia": "Asia",
|
||||
"ru": "Russia",
|
||||
"me": "Middle East",
|
||||
"oceania": "Oceania",
|
||||
"sa": "South America",
|
||||
"africa": "Africa",
|
||||
"unknown": "unknown",
|
||||
"": "",
|
||||
}
|
||||
for in, want := range cases {
|
||||
if got := regionLabel(in); got != want {
|
||||
t.Errorf("regionLabel(%q) = %q, want %q", in, got, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestAllResolversCatalogIntegrity(t *testing.T) {
|
||||
// Catch typos / duplicates in the static catalog.
|
||||
ids := map[string]bool{}
|
||||
for _, r := range allResolvers {
|
||||
if r.ID == "" {
|
||||
t.Errorf("resolver with empty ID: %+v", r)
|
||||
}
|
||||
if r.IP == "" {
|
||||
t.Errorf("resolver %q has empty IP", r.ID)
|
||||
}
|
||||
if strings.Contains(r.ID, "|") {
|
||||
t.Errorf("resolver ID %q contains reserved separator '|'", r.ID)
|
||||
}
|
||||
if ids[r.ID] {
|
||||
t.Errorf("duplicate resolver ID %q", r.ID)
|
||||
}
|
||||
ids[r.ID] = true
|
||||
if r.DoTHost == "" && r.DoHURL != "" {
|
||||
// DoH-only is acceptable but log it for visibility.
|
||||
t.Logf("resolver %q has DoH but no DoT", r.ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue