Files
sultan/pkg/license/domain_test.go
T
2026-10-01 23:52:15 +02:00

58 lines
1.7 KiB
Go

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)
}