package license import "testing" func TestAllowsDomain(t *testing.T) { l := License{AllowedDomains: []string{"*.firma.de", "shop.de"}} tests := map[string]bool{ "shop.de": true, "SHOP.de": true, "shop.de.": true, "www.shop.de": false, // exakter Eintrag deckt keine Subdomains "a.firma.de": true, "a.b.firma.de": true, // Wildcard deckt alle Subdomain-Ebenen "firma.de": false, // Wildcard deckt nicht die Domain selbst "evilfirma.de": false, "firma.de.evil.com": false, "a.firma.de.evil.com": false, "": false, ".firma.de": false, "a..firma.de": false, } for host, want := range tests { if got := l.AllowsDomain(host); got != want { t.Errorf("AllowsDomain(%q) = %v, erwartet %v", host, got, want) } } } func TestNormalizeDomainPattern(t *testing.T) { valid := map[string]string{ "firma.de": "firma.de", "Firma.DE.": "firma.de", "*.firma.de": "*.firma.de", "xn--mnchen-3ya.de": "xn--mnchen-3ya.de", "a-b.c1.de": "a-b.c1.de", } for in, want := range valid { got, err := normalizePattern(in) if err != nil || got != want { t.Errorf("normalizePattern(%q) = %q, %v; erwartet %q", in, got, err, want) } } for _, bad := range []string{"", "*", "*.de", "de", "a.*.de", "**.de", "-a.de", "a-.de", "a_b.de", "münchen.de", "a..de", "foo bar.de", strings63() + "x.de"} { if _, err := normalizePattern(bad); err == nil { t.Errorf("normalizePattern(%q): erwartet Fehler", bad) } } } // strings63 liefert ein Label mit 63 Zeichen (Maximum); mit "x" wird es zu lang. func strings63() string { b := make([]byte, 63) for i := range b { b[i] = 'a' } return string(b) } func TestNormalizeDomain_Exported(t *testing.T) { if got, err := NormalizeDomain(" Shop.DE. "); err != nil || got != "shop.de" { t.Errorf("NormalizeDomain = %q, %v", got, err) } if _, err := NormalizeDomain("*.de"); err == nil { t.Error("*.de akzeptiert") } }