66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package iana
|
|
|
|
import "testing"
|
|
|
|
func TestExtractSuffix_Valid(t *testing.T) {
|
|
testCases := []struct {
|
|
domain, want string
|
|
}{
|
|
// TLD with only 1 rule.
|
|
{"biz", "biz"},
|
|
{"domain.biz", "biz"},
|
|
{"b.domain.biz", "biz"},
|
|
|
|
// The relevant {kobe,kyoto}.jp rules are:
|
|
// jp
|
|
// *.kobe.jp
|
|
// !city.kobe.jp
|
|
// kyoto.jp
|
|
// ide.kyoto.jp
|
|
{"jp", "jp"},
|
|
{"kobe.jp", "jp"},
|
|
{"c.kobe.jp", "c.kobe.jp"},
|
|
{"b.c.kobe.jp", "c.kobe.jp"},
|
|
{"a.b.c.kobe.jp", "c.kobe.jp"},
|
|
{"city.kobe.jp", "kobe.jp"},
|
|
{"www.city.kobe.jp", "kobe.jp"},
|
|
{"kyoto.jp", "kyoto.jp"},
|
|
{"test.kyoto.jp", "kyoto.jp"},
|
|
{"ide.kyoto.jp", "ide.kyoto.jp"},
|
|
{"b.ide.kyoto.jp", "ide.kyoto.jp"},
|
|
{"a.b.ide.kyoto.jp", "ide.kyoto.jp"},
|
|
|
|
// Domain with a private public suffix should return the ICANN public suffix.
|
|
{"foo.compute-1.amazonaws.com", "com"},
|
|
// Domain equal to a private public suffix should return the ICANN public
|
|
// suffix.
|
|
{"cloudapp.net", "net"},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
got, err := ExtractSuffix(tc.domain)
|
|
if err != nil {
|
|
t.Errorf("%q: returned error", tc.domain)
|
|
continue
|
|
}
|
|
if got != tc.want {
|
|
t.Errorf("%q: got %q, want %q", tc.domain, got, tc.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestExtractSuffix_Invalid(t *testing.T) {
|
|
testCases := []string{
|
|
"",
|
|
"example",
|
|
"example.example",
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
_, err := ExtractSuffix(tc)
|
|
if err == nil {
|
|
t.Errorf("%q: expected err, got none", tc)
|
|
}
|
|
}
|
|
}
|