67 lines
2.0 KiB
Go
67 lines
2.0 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)
|
|
}
|
|
|
|
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")
|
|
}
|
|
}
|