config: watch a target listed twice only once (closes #207)
check / check (push) Successful in 1m50s
check / check (push) Successful in 1m50s
ClassifyTargets kept a name every time it appeared in DNSWATCHER_TARGETS, so example.com,Example.com. put example.com in the domain list twice and every check looked it up and checked its certificates twice, sending two expiry warnings per TLS check (port checks were already grouped by address and port). It now skips a name it has already kept, comparing after the lower-casing and trailing-dot removal it already did; the list keeps the order of first appearance. Model: opus-5-5
This commit was merged in pull request #211.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package config_test
|
||||
|
||||
import (
|
||||
"slices"
|
||||
"testing"
|
||||
|
||||
"sneak.berlin/go/dnswatcher/internal/config"
|
||||
@@ -93,6 +94,29 @@ func TestClassifyTargets(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestClassifyTargetsKeepsEachNameOnce(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
domains, hostnames, err := config.ClassifyTargets([]string{
|
||||
"example.org",
|
||||
"Example.org.",
|
||||
"www.example.org",
|
||||
"EXAMPLE.ORG",
|
||||
"WWW.Example.org.",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
if !slices.Equal(domains, []string{"example.org"}) {
|
||||
t.Errorf("domains = %v, want [example.org]", domains)
|
||||
}
|
||||
|
||||
if !slices.Equal(hostnames, []string{"www.example.org"}) {
|
||||
t.Errorf("hostnames = %v, want [www.example.org]", hostnames)
|
||||
}
|
||||
}
|
||||
|
||||
func TestClassifyTargetsRejectsPublicSuffix(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user