mirror of
https://github.com/mjl-/mox.git
synced 2025-07-10 10:34:40 +03:00
mox!
This commit is contained in:
79
publicsuffix/list_test.go
Normal file
79
publicsuffix/list_test.go
Normal file
@ -0,0 +1,79 @@
|
||||
package publicsuffix
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/mjl-/mox/dns"
|
||||
)
|
||||
|
||||
func TestList(t *testing.T) {
|
||||
const data = `
|
||||
// ===BEGIN ICANN DOMAINS===
|
||||
com
|
||||
|
||||
*.jp
|
||||
// Hosts in .hokkaido.jp can't set cookies below level 4...
|
||||
*.hokkaido.jp
|
||||
*.tokyo.jp
|
||||
// ...except hosts in pref.hokkaido.jp, which can set cookies at level 3.
|
||||
!pref.hokkaido.jp
|
||||
!metro.tokyo.jp
|
||||
|
||||
bücher.example.com
|
||||
// ===END ICANN DOMAINS===
|
||||
|
||||
ignored.example.com
|
||||
`
|
||||
l, err := ParseList(strings.NewReader(data))
|
||||
if err != nil {
|
||||
t.Fatalf("parsing list: %s", err)
|
||||
}
|
||||
|
||||
test := func(domain, orgDomain string) {
|
||||
t.Helper()
|
||||
|
||||
d, err := dns.ParseDomain(domain)
|
||||
if err != nil {
|
||||
t.Fatalf("idna to unicode %q: %s", domain, err)
|
||||
}
|
||||
od, err := dns.ParseDomain(orgDomain)
|
||||
if err != nil {
|
||||
t.Fatalf("idna to unicode org domain %q: %s", orgDomain, err)
|
||||
}
|
||||
|
||||
r := l.Lookup(context.Background(), d)
|
||||
if r != od {
|
||||
t.Fatalf("got %q, expected %q, for domain %q", r, orgDomain, domain)
|
||||
}
|
||||
}
|
||||
|
||||
test("com", "com")
|
||||
test("foo.com", "foo.com")
|
||||
test("bar.foo.com", "foo.com")
|
||||
test("foo.bar.jp", "foo.bar.jp")
|
||||
test("baz.foo.bar.jp", "foo.bar.jp")
|
||||
test("bar.jp", "bar.jp")
|
||||
test("foo.bar.hokkaido.jp", "foo.bar.hokkaido.jp")
|
||||
test("baz.foo.bar.hokkaido.jp", "foo.bar.hokkaido.jp")
|
||||
test("bar.hokkaido.jp", "bar.hokkaido.jp")
|
||||
test("pref.hokkaido.jp", "pref.hokkaido.jp")
|
||||
test("foo.pref.hokkaido.jp", "pref.hokkaido.jp")
|
||||
test("WwW.EXAMPLE.Com", "example.com")
|
||||
test("bücher.example.com", "bücher.example.com")
|
||||
test("foo.bücher.example.com", "foo.bücher.example.com")
|
||||
test("bar.foo.bücher.example.com", "foo.bücher.example.com")
|
||||
test("xn--bcher-kva.example.com", "bücher.example.com")
|
||||
test("foo.xn--bcher-kva.example.com", "foo.bücher.example.com")
|
||||
test("bar.foo.xn--bcher-kva.example.com", "foo.bücher.example.com")
|
||||
test("x.ignored.example.com", "example.com")
|
||||
|
||||
l, err = ParseList(bytes.NewReader(publicsuffixData))
|
||||
if err != nil {
|
||||
t.Fatalf("parsing public suffix list: %s", err)
|
||||
}
|
||||
|
||||
// todo: add testcases from https://raw.githubusercontent.com/publicsuffix/list/master/tests/test_psl.txt
|
||||
}
|
Reference in New Issue
Block a user