public_suffix 5.0.3 → 5.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/SECURITY.md +2 -81
- data/data/list.txt +2782 -1178
- data/lib/public_suffix/version.rb +1 -1
- metadata +4 -38
- data/.github/FUNDING.yml +0 -12
- data/.github/dependabot.yml +0 -19
- data/.github/workflows/psl-update.yml +0 -38
- data/.github/workflows/release.yml +0 -18
- data/.github/workflows/tests.yml +0 -30
- data/.gitignore +0 -8
- data/.rubocop.yml +0 -37
- data/.rubocop_opinionated.yml +0 -135
- data/Gemfile +0 -14
- data/Rakefile +0 -52
- data/bin/console +0 -15
- data/public_suffix.gemspec +0 -29
- data/test/.empty +0 -2
- data/test/acceptance_test.rb +0 -131
- data/test/benchmarks/bm_find.rb +0 -66
- data/test/benchmarks/bm_find_all.rb +0 -102
- data/test/benchmarks/bm_names.rb +0 -91
- data/test/benchmarks/bm_select.rb +0 -26
- data/test/benchmarks/bm_select_incremental.rb +0 -25
- data/test/benchmarks/bm_valid.rb +0 -101
- data/test/profilers/domain_profiler.rb +0 -12
- data/test/profilers/find_profiler.rb +0 -12
- data/test/profilers/find_profiler_jp.rb +0 -12
- data/test/profilers/initialization_profiler.rb +0 -11
- data/test/profilers/list_profsize.rb +0 -11
- data/test/profilers/object_binsize.rb +0 -57
- data/test/psl_test.rb +0 -52
- data/test/test_helper.rb +0 -10
- data/test/tests.txt +0 -98
- data/test/unit/domain_test.rb +0 -106
- data/test/unit/errors_test.rb +0 -25
- data/test/unit/list_test.rb +0 -241
- data/test/unit/public_suffix_test.rb +0 -188
- data/test/unit/rule_test.rb +0 -222
data/test/tests.txt
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
// Any copyright is dedicated to the Public Domain.
|
2
|
-
// http://creativecommons.org/publicdomain/zero/1.0/
|
3
|
-
|
4
|
-
// null input
|
5
|
-
null, null
|
6
|
-
// Mixed case
|
7
|
-
'COM', null
|
8
|
-
'example.COM', 'example.com'
|
9
|
-
'WwW.example.COM', 'example.com'
|
10
|
-
// Leading dot
|
11
|
-
'.com', null
|
12
|
-
'.example', null
|
13
|
-
'.example.com', null
|
14
|
-
'.example.example', null
|
15
|
-
// Unlisted TLD
|
16
|
-
'example', null
|
17
|
-
'example.example', 'example.example'
|
18
|
-
'b.example.example', 'example.example'
|
19
|
-
'a.b.example.example', 'example.example'
|
20
|
-
// Listed, but non-Internet, TLD
|
21
|
-
//'local', null
|
22
|
-
//'example.local', null
|
23
|
-
//'b.example.local', null
|
24
|
-
//'a.b.example.local', null
|
25
|
-
// TLD with only 1 rule
|
26
|
-
'biz', null
|
27
|
-
'domain.biz', 'domain.biz'
|
28
|
-
'b.domain.biz', 'domain.biz'
|
29
|
-
'a.b.domain.biz', 'domain.biz'
|
30
|
-
// TLD with some 2-level rules
|
31
|
-
'com', null
|
32
|
-
'example.com', 'example.com'
|
33
|
-
'b.example.com', 'example.com'
|
34
|
-
'a.b.example.com', 'example.com'
|
35
|
-
'uk.com', null
|
36
|
-
'example.uk.com', 'example.uk.com'
|
37
|
-
'b.example.uk.com', 'example.uk.com'
|
38
|
-
'a.b.example.uk.com', 'example.uk.com'
|
39
|
-
'test.ac', 'test.ac'
|
40
|
-
// TLD with only 1 (wildcard) rule
|
41
|
-
'mm', null
|
42
|
-
'c.mm', null
|
43
|
-
'b.c.mm', 'b.c.mm'
|
44
|
-
'a.b.c.mm', 'b.c.mm'
|
45
|
-
// More complex TLD
|
46
|
-
'jp', null
|
47
|
-
'test.jp', 'test.jp'
|
48
|
-
'www.test.jp', 'test.jp'
|
49
|
-
'ac.jp', null
|
50
|
-
'test.ac.jp', 'test.ac.jp'
|
51
|
-
'www.test.ac.jp', 'test.ac.jp'
|
52
|
-
'kyoto.jp', null
|
53
|
-
'test.kyoto.jp', 'test.kyoto.jp'
|
54
|
-
'ide.kyoto.jp', null
|
55
|
-
'b.ide.kyoto.jp', 'b.ide.kyoto.jp'
|
56
|
-
'a.b.ide.kyoto.jp', 'b.ide.kyoto.jp'
|
57
|
-
'c.kobe.jp', null
|
58
|
-
'b.c.kobe.jp', 'b.c.kobe.jp'
|
59
|
-
'a.b.c.kobe.jp', 'b.c.kobe.jp'
|
60
|
-
'city.kobe.jp', 'city.kobe.jp'
|
61
|
-
'www.city.kobe.jp', 'city.kobe.jp'
|
62
|
-
// TLD with a wildcard rule and exceptions
|
63
|
-
'ck', null
|
64
|
-
'test.ck', null
|
65
|
-
'b.test.ck', 'b.test.ck'
|
66
|
-
'a.b.test.ck', 'b.test.ck'
|
67
|
-
'www.ck', 'www.ck'
|
68
|
-
'www.www.ck', 'www.ck'
|
69
|
-
// US K12
|
70
|
-
'us', null
|
71
|
-
'test.us', 'test.us'
|
72
|
-
'www.test.us', 'test.us'
|
73
|
-
'ak.us', null
|
74
|
-
'test.ak.us', 'test.ak.us'
|
75
|
-
'www.test.ak.us', 'test.ak.us'
|
76
|
-
'k12.ak.us', null
|
77
|
-
'test.k12.ak.us', 'test.k12.ak.us'
|
78
|
-
'www.test.k12.ak.us', 'test.k12.ak.us'
|
79
|
-
// IDN labels
|
80
|
-
'食狮.com.cn', '食狮.com.cn'
|
81
|
-
'食狮.公司.cn', '食狮.公司.cn'
|
82
|
-
'www.食狮.公司.cn', '食狮.公司.cn'
|
83
|
-
'shishi.公司.cn', 'shishi.公司.cn'
|
84
|
-
'公司.cn', null
|
85
|
-
'食狮.中国', '食狮.中国'
|
86
|
-
'www.食狮.中国', '食狮.中国'
|
87
|
-
'shishi.中国', 'shishi.中国'
|
88
|
-
'中国', null
|
89
|
-
// Same as above, but punycoded
|
90
|
-
'xn--85x722f.com.cn', 'xn--85x722f.com.cn'
|
91
|
-
'xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn'
|
92
|
-
'www.xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn'
|
93
|
-
'shishi.xn--55qx5d.cn', 'shishi.xn--55qx5d.cn'
|
94
|
-
'xn--55qx5d.cn', null
|
95
|
-
'xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s'
|
96
|
-
'www.xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s'
|
97
|
-
'shishi.xn--fiqs8s', 'shishi.xn--fiqs8s'
|
98
|
-
'xn--fiqs8s', null
|
data/test/unit/domain_test.rb
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
class PublicSuffix::DomainTest < Minitest::Test
|
6
|
-
|
7
|
-
def setup
|
8
|
-
@klass = PublicSuffix::Domain
|
9
|
-
end
|
10
|
-
|
11
|
-
# Tokenizes given input into labels.
|
12
|
-
def test_self_name_to_labels
|
13
|
-
assert_equal %w[someone spaces live com],
|
14
|
-
PublicSuffix::Domain.name_to_labels("someone.spaces.live.com")
|
15
|
-
assert_equal %w[leontina23samiko wiki zoho com],
|
16
|
-
PublicSuffix::Domain.name_to_labels("leontina23samiko.wiki.zoho.com")
|
17
|
-
end
|
18
|
-
|
19
|
-
# Converts input into String.
|
20
|
-
def test_self_name_to_labels_converts_input_to_string
|
21
|
-
assert_equal %w[someone spaces live com],
|
22
|
-
PublicSuffix::Domain.name_to_labels(:"someone.spaces.live.com")
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
def test_initialize_with_tld
|
27
|
-
domain = @klass.new("com")
|
28
|
-
assert_equal "com", domain.tld
|
29
|
-
assert_nil domain.sld
|
30
|
-
assert_nil domain.trd
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_initialize_with_tld_and_sld
|
34
|
-
domain = @klass.new("com", "google")
|
35
|
-
assert_equal "com", domain.tld
|
36
|
-
assert_equal "google", domain.sld
|
37
|
-
assert_nil domain.trd
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_initialize_with_tld_and_sld_and_trd
|
41
|
-
domain = @klass.new("com", "google", "www")
|
42
|
-
assert_equal "com", domain.tld
|
43
|
-
assert_equal "google", domain.sld
|
44
|
-
assert_equal "www", domain.trd
|
45
|
-
end
|
46
|
-
|
47
|
-
|
48
|
-
def test_to_s
|
49
|
-
assert_equal "com", @klass.new("com").to_s
|
50
|
-
assert_equal "google.com", @klass.new("com", "google").to_s
|
51
|
-
assert_equal "www.google.com", @klass.new("com", "google", "www").to_s
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_to_a
|
55
|
-
assert_equal [nil, nil, "com"], @klass.new("com").to_a
|
56
|
-
assert_equal [nil, "google", "com"], @klass.new("com", "google").to_a
|
57
|
-
assert_equal ["www", "google", "com"], @klass.new("com", "google", "www").to_a
|
58
|
-
end
|
59
|
-
|
60
|
-
|
61
|
-
def test_tld
|
62
|
-
assert_equal "com", @klass.new("com", "google", "www").tld
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_sld
|
66
|
-
assert_equal "google", @klass.new("com", "google", "www").sld
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_trd
|
70
|
-
assert_equal "www", @klass.new("com", "google", "www").trd
|
71
|
-
end
|
72
|
-
|
73
|
-
|
74
|
-
def test_name
|
75
|
-
assert_equal "com", @klass.new("com").name
|
76
|
-
assert_equal "google.com", @klass.new("com", "google").name
|
77
|
-
assert_equal "www.google.com", @klass.new("com", "google", "www").name
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_domain
|
81
|
-
assert_nil @klass.new("com").domain
|
82
|
-
assert_nil @klass.new("tldnotlisted").domain
|
83
|
-
assert_equal "google.com", @klass.new("com", "google").domain
|
84
|
-
assert_equal "google.tldnotlisted", @klass.new("tldnotlisted", "google").domain
|
85
|
-
assert_equal "google.com", @klass.new("com", "google", "www").domain
|
86
|
-
assert_equal "google.tldnotlisted", @klass.new("tldnotlisted", "google", "www").domain
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_subdomain
|
90
|
-
assert_nil @klass.new("com").subdomain
|
91
|
-
assert_nil @klass.new("tldnotlisted").subdomain
|
92
|
-
assert_nil @klass.new("com", "google").subdomain
|
93
|
-
assert_nil @klass.new("tldnotlisted", "google").subdomain
|
94
|
-
assert_equal "www.google.com", @klass.new("com", "google", "www").subdomain
|
95
|
-
assert_equal "www.google.tldnotlisted", @klass.new("tldnotlisted", "google", "www").subdomain
|
96
|
-
end
|
97
|
-
|
98
|
-
|
99
|
-
def test_domain_question
|
100
|
-
assert !@klass.new("com").domain?
|
101
|
-
assert @klass.new("com", "example").domain?
|
102
|
-
assert @klass.new("com", "example", "www").domain?
|
103
|
-
assert @klass.new("tldnotlisted", "example").domain?
|
104
|
-
end
|
105
|
-
|
106
|
-
end
|
data/test/unit/errors_test.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
class ErrorsTest < Minitest::Test
|
6
|
-
|
7
|
-
# Inherits from StandardError
|
8
|
-
def test_error_inheritance
|
9
|
-
assert_kind_of StandardError,
|
10
|
-
PublicSuffix::Error.new
|
11
|
-
end
|
12
|
-
|
13
|
-
# Inherits from PublicSuffix::Error
|
14
|
-
def test_domain_invalid_inheritance
|
15
|
-
assert_kind_of PublicSuffix::Error,
|
16
|
-
PublicSuffix::DomainInvalid.new
|
17
|
-
end
|
18
|
-
|
19
|
-
# Inherits from PublicSuffix::DomainInvalid
|
20
|
-
def test_domain_not_allowed_inheritance
|
21
|
-
assert_kind_of PublicSuffix::DomainInvalid,
|
22
|
-
PublicSuffix::DomainNotAllowed.new
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
data/test/unit/list_test.rb
DELETED
@@ -1,241 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
class PublicSuffix::ListTest < Minitest::Test
|
6
|
-
|
7
|
-
def setup
|
8
|
-
@list = PublicSuffix::List.new
|
9
|
-
end
|
10
|
-
|
11
|
-
def teardown
|
12
|
-
PublicSuffix::List.default = nil
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
def test_initialize
|
17
|
-
assert_instance_of PublicSuffix::List, @list
|
18
|
-
assert_equal 0, @list.size
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
def test_equality_with_self
|
23
|
-
list = PublicSuffix::List.new
|
24
|
-
assert_equal list, list
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_equality_with_internals
|
28
|
-
rule = PublicSuffix::Rule.factory("com")
|
29
|
-
assert_equal PublicSuffix::List.new.add(rule), PublicSuffix::List.new.add(rule)
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_each_without_block
|
33
|
-
list = PublicSuffix::List.parse(<<LIST)
|
34
|
-
alpha
|
35
|
-
beta
|
36
|
-
LIST
|
37
|
-
|
38
|
-
assert_kind_of Enumerator, list.each
|
39
|
-
assert_equal 2, list.each.count
|
40
|
-
assert_equal PublicSuffix::Rule.factory("alpha"), list.each.first
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_each_with_block
|
44
|
-
list = PublicSuffix::List.parse(<<LIST)
|
45
|
-
alpha
|
46
|
-
beta
|
47
|
-
LIST
|
48
|
-
|
49
|
-
entries = []
|
50
|
-
list.each { |r| entries << r }
|
51
|
-
|
52
|
-
assert_equal 2, entries.count
|
53
|
-
assert_equal PublicSuffix::Rule.factory("alpha"), entries.first
|
54
|
-
end
|
55
|
-
|
56
|
-
|
57
|
-
def test_add
|
58
|
-
assert_equal @list, @list.add(PublicSuffix::Rule.factory("foo"))
|
59
|
-
assert_equal @list, @list << PublicSuffix::Rule.factory("bar")
|
60
|
-
assert_equal 2, @list.size
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_add_should_recreate_index
|
64
|
-
@list = PublicSuffix::List.parse("com")
|
65
|
-
assert_equal PublicSuffix::Rule.factory("com"), @list.find("google.com")
|
66
|
-
assert_equal @list.default_rule, @list.find("google.net")
|
67
|
-
|
68
|
-
@list << PublicSuffix::Rule.factory("net")
|
69
|
-
assert_equal PublicSuffix::Rule.factory("com"), @list.find("google.com")
|
70
|
-
assert_equal PublicSuffix::Rule.factory("net"), @list.find("google.net")
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_empty?
|
74
|
-
assert @list.empty?
|
75
|
-
@list.add(PublicSuffix::Rule.factory(""))
|
76
|
-
assert !@list.empty?
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_size
|
80
|
-
assert_equal 0, @list.size
|
81
|
-
assert_equal @list, @list.add(PublicSuffix::Rule.factory(""))
|
82
|
-
assert_equal 1, @list.size
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_clear
|
86
|
-
assert_equal 0, @list.size
|
87
|
-
assert_equal @list, @list.add(PublicSuffix::Rule.factory(""))
|
88
|
-
assert_equal 1, @list.size
|
89
|
-
assert_equal @list, @list.clear
|
90
|
-
assert_equal 0, @list.size
|
91
|
-
end
|
92
|
-
|
93
|
-
|
94
|
-
def test_find
|
95
|
-
list = PublicSuffix::List.parse(<<LIST)
|
96
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
97
|
-
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
98
|
-
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
99
|
-
|
100
|
-
// ===BEGIN ICANN DOMAINS===
|
101
|
-
|
102
|
-
// com
|
103
|
-
com
|
104
|
-
|
105
|
-
// uk
|
106
|
-
*.uk
|
107
|
-
*.sch.uk
|
108
|
-
!bl.uk
|
109
|
-
!british-library.uk
|
110
|
-
|
111
|
-
// io
|
112
|
-
io
|
113
|
-
|
114
|
-
// ===END ICANN DOMAINS===
|
115
|
-
// ===BEGIN PRIVATE DOMAINS===
|
116
|
-
|
117
|
-
// Google, Inc.
|
118
|
-
blogspot.com
|
119
|
-
|
120
|
-
// ===END PRIVATE DOMAINS===
|
121
|
-
LIST
|
122
|
-
|
123
|
-
# match IANA
|
124
|
-
assert_equal PublicSuffix::Rule.factory("com"), list.find("example.com")
|
125
|
-
assert_equal PublicSuffix::Rule.factory("com"), list.find("foo.example.com")
|
126
|
-
|
127
|
-
# match wildcard
|
128
|
-
assert_equal PublicSuffix::Rule.factory("*.uk"), list.find("example.uk")
|
129
|
-
assert_equal PublicSuffix::Rule.factory("*.uk"), list.find("example.co.uk")
|
130
|
-
assert_equal PublicSuffix::Rule.factory("*.uk"), list.find("foo.example.co.uk")
|
131
|
-
|
132
|
-
# match exception
|
133
|
-
assert_equal PublicSuffix::Rule.factory("!british-library.uk"), list.find("british-library.uk")
|
134
|
-
assert_equal PublicSuffix::Rule.factory("!british-library.uk"), list.find("foo.british-library.uk")
|
135
|
-
|
136
|
-
# match default rule
|
137
|
-
assert_equal PublicSuffix::Rule.factory("*"), list.find("test")
|
138
|
-
assert_equal PublicSuffix::Rule.factory("*"), list.find("example.test")
|
139
|
-
assert_equal PublicSuffix::Rule.factory("*"), list.find("foo.example.test")
|
140
|
-
|
141
|
-
# match private
|
142
|
-
assert_equal PublicSuffix::Rule.factory("blogspot.com", private: true), list.find("blogspot.com")
|
143
|
-
assert_equal PublicSuffix::Rule.factory("blogspot.com", private: true), list.find("foo.blogspot.com")
|
144
|
-
end
|
145
|
-
|
146
|
-
|
147
|
-
def test_select
|
148
|
-
assert_equal 2, list.send(:select, "british-library.uk").size
|
149
|
-
end
|
150
|
-
|
151
|
-
def test_select_name_blank
|
152
|
-
assert_equal [], list.send(:select, nil)
|
153
|
-
assert_equal [], list.send(:select, "")
|
154
|
-
assert_equal [], list.send(:select, " ")
|
155
|
-
end
|
156
|
-
|
157
|
-
def test_select_ignore_private
|
158
|
-
list = PublicSuffix::List.new
|
159
|
-
list.add r1 = PublicSuffix::Rule.factory("io")
|
160
|
-
list.add r2 = PublicSuffix::Rule.factory("example.io", private: true)
|
161
|
-
|
162
|
-
assert_equal list.send(:select, "foo.io"), [r1]
|
163
|
-
assert_equal list.send(:select, "example.io"), [r1, r2]
|
164
|
-
assert_equal list.send(:select, "foo.example.io"), [r1, r2]
|
165
|
-
|
166
|
-
assert_equal list.send(:select, "foo.io", ignore_private: false), [r1]
|
167
|
-
assert_equal list.send(:select, "example.io", ignore_private: false), [r1, r2]
|
168
|
-
assert_equal list.send(:select, "foo.example.io", ignore_private: false), [r1, r2]
|
169
|
-
|
170
|
-
assert_equal list.send(:select, "foo.io", ignore_private: true), [r1]
|
171
|
-
assert_equal list.send(:select, "example.io", ignore_private: true), [r1]
|
172
|
-
assert_equal list.send(:select, "foo.example.io", ignore_private: true), [r1]
|
173
|
-
end
|
174
|
-
|
175
|
-
|
176
|
-
def test_self_default_getter
|
177
|
-
PublicSuffix::List.default = nil
|
178
|
-
assert_nil(PublicSuffix::List.class_eval { @default })
|
179
|
-
PublicSuffix::List.default
|
180
|
-
refute_nil(PublicSuffix::List.class_eval { @default })
|
181
|
-
end
|
182
|
-
|
183
|
-
def test_self_default_setter
|
184
|
-
PublicSuffix::List.default
|
185
|
-
refute_nil(PublicSuffix::List.class_eval { @default })
|
186
|
-
PublicSuffix::List.default = nil
|
187
|
-
assert_nil(PublicSuffix::List.class_eval { @default })
|
188
|
-
end
|
189
|
-
|
190
|
-
def test_self_parse
|
191
|
-
list = PublicSuffix::List.parse(<<LIST)
|
192
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
193
|
-
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
194
|
-
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
195
|
-
|
196
|
-
// ===BEGIN ICANN DOMAINS===
|
197
|
-
|
198
|
-
// com
|
199
|
-
com
|
200
|
-
|
201
|
-
// uk
|
202
|
-
*.uk
|
203
|
-
!british-library.uk
|
204
|
-
|
205
|
-
// ===END ICANN DOMAINS===
|
206
|
-
// ===BEGIN PRIVATE DOMAINS===
|
207
|
-
|
208
|
-
// Google, Inc.
|
209
|
-
blogspot.com
|
210
|
-
|
211
|
-
// ===END PRIVATE DOMAINS===
|
212
|
-
LIST
|
213
|
-
|
214
|
-
assert_instance_of PublicSuffix::List, list
|
215
|
-
assert_equal 4, list.size
|
216
|
-
|
217
|
-
rules = %w[com *.uk !british-library.uk blogspot.com].map { |name| PublicSuffix::Rule.factory(name) }
|
218
|
-
assert_equal rules, list.each.to_a
|
219
|
-
|
220
|
-
# private domains
|
221
|
-
assert_equal false, list.find("com").private
|
222
|
-
assert_equal true, list.find("blogspot.com").private
|
223
|
-
end
|
224
|
-
|
225
|
-
|
226
|
-
private
|
227
|
-
|
228
|
-
def list
|
229
|
-
@_list ||= PublicSuffix::List.parse(<<LIST)
|
230
|
-
// com : http://en.wikipedia.org/wiki/.com
|
231
|
-
com
|
232
|
-
|
233
|
-
// uk : http://en.wikipedia.org/wiki/.uk
|
234
|
-
*.uk
|
235
|
-
*.sch.uk
|
236
|
-
!bl.uk
|
237
|
-
!british-library.uk
|
238
|
-
LIST
|
239
|
-
end
|
240
|
-
|
241
|
-
end
|
@@ -1,188 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
class PublicSuffixTest < Minitest::Test
|
6
|
-
|
7
|
-
def test_private_domains_enabled_by_default
|
8
|
-
domain = PublicSuffix.parse("www.example.blogspot.com")
|
9
|
-
assert_equal "blogspot.com", domain.tld
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_private_domains_disable
|
13
|
-
data = File.read(PublicSuffix::List::DEFAULT_LIST_PATH)
|
14
|
-
PublicSuffix::List.default = PublicSuffix::List.parse(data, private_domains: false)
|
15
|
-
domain = PublicSuffix.parse("www.example.blogspot.com")
|
16
|
-
assert_equal "com", domain.tld
|
17
|
-
ensure
|
18
|
-
PublicSuffix::List.default = nil
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
def test_self_parse_a_domain_with_tld_and_sld
|
23
|
-
domain = PublicSuffix.parse("example.com")
|
24
|
-
assert_instance_of PublicSuffix::Domain, domain
|
25
|
-
assert_equal "com", domain.tld
|
26
|
-
assert_equal "example", domain.sld
|
27
|
-
assert_nil domain.trd
|
28
|
-
|
29
|
-
domain = PublicSuffix.parse("example.co.uk")
|
30
|
-
assert_instance_of PublicSuffix::Domain, domain
|
31
|
-
assert_equal "co.uk", domain.tld
|
32
|
-
assert_equal "example", domain.sld
|
33
|
-
assert_nil domain.trd
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_self_parse_a_domain_with_tld_and_sld_and_trd
|
37
|
-
domain = PublicSuffix.parse("alpha.example.com")
|
38
|
-
assert_instance_of PublicSuffix::Domain, domain
|
39
|
-
assert_equal "com", domain.tld
|
40
|
-
assert_equal "example", domain.sld
|
41
|
-
assert_equal "alpha", domain.trd
|
42
|
-
|
43
|
-
domain = PublicSuffix.parse("alpha.example.co.uk")
|
44
|
-
assert_instance_of PublicSuffix::Domain, domain
|
45
|
-
assert_equal "co.uk", domain.tld
|
46
|
-
assert_equal "example", domain.sld
|
47
|
-
assert_equal "alpha", domain.trd
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_self_parse_a_domain_with_tld_and_sld_and_4rd
|
51
|
-
domain = PublicSuffix.parse("one.two.example.com")
|
52
|
-
assert_instance_of PublicSuffix::Domain, domain
|
53
|
-
assert_equal "com", domain.tld
|
54
|
-
assert_equal "example", domain.sld
|
55
|
-
assert_equal "one.two", domain.trd
|
56
|
-
|
57
|
-
domain = PublicSuffix.parse("one.two.example.co.uk")
|
58
|
-
assert_instance_of PublicSuffix::Domain, domain
|
59
|
-
assert_equal "co.uk", domain.tld
|
60
|
-
assert_equal "example", domain.sld
|
61
|
-
assert_equal "one.two", domain.trd
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_self_parse_name_fqdn
|
65
|
-
domain = PublicSuffix.parse("www.example.com.")
|
66
|
-
assert_instance_of PublicSuffix::Domain, domain
|
67
|
-
assert_equal "com", domain.tld
|
68
|
-
assert_equal "example", domain.sld
|
69
|
-
assert_equal "www", domain.trd
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_self_parse_with_custom_list
|
73
|
-
list = PublicSuffix::List.new
|
74
|
-
list << PublicSuffix::Rule.factory("test")
|
75
|
-
|
76
|
-
domain = PublicSuffix.parse("www.example.test", list: list)
|
77
|
-
assert_instance_of PublicSuffix::Domain, domain
|
78
|
-
assert_equal "test", domain.tld
|
79
|
-
assert_equal "example", domain.sld
|
80
|
-
assert_equal "www", domain.trd
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_self_parse_with_notlisted_name
|
84
|
-
domain = PublicSuffix.parse("example.tldnotlisted")
|
85
|
-
assert_instance_of PublicSuffix::Domain, domain
|
86
|
-
assert_equal "tldnotlisted", domain.tld
|
87
|
-
assert_equal "example", domain.sld
|
88
|
-
assert_nil domain.trd
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_self_parse_with_unallowed_domain
|
92
|
-
error = assert_raises(PublicSuffix::DomainNotAllowed) { PublicSuffix.parse("example.bd") }
|
93
|
-
assert_match(/example\.bd/, error.message)
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_self_parse_with_uri
|
97
|
-
error = assert_raises(PublicSuffix::DomainInvalid) { PublicSuffix.parse("http://google.com") }
|
98
|
-
assert_match(%r{http://google\.com}, error.message)
|
99
|
-
end
|
100
|
-
|
101
|
-
|
102
|
-
def test_self_valid
|
103
|
-
assert PublicSuffix.valid?("google.com")
|
104
|
-
assert PublicSuffix.valid?("www.google.com")
|
105
|
-
assert PublicSuffix.valid?("google.co.uk")
|
106
|
-
assert PublicSuffix.valid?("www.google.co.uk")
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_self_valid_with_notlisted_name
|
110
|
-
assert PublicSuffix.valid?("google.tldnotlisted")
|
111
|
-
assert PublicSuffix.valid?("www.google.tldnotlisted")
|
112
|
-
end
|
113
|
-
|
114
|
-
# def test_self_valid_with_fully_qualified_domain_name
|
115
|
-
# assert PublicSuffix.valid?("google.com.")
|
116
|
-
# assert PublicSuffix.valid?("google.co.uk.")
|
117
|
-
# assert !PublicSuffix.valid?("google.tldnotlisted.")
|
118
|
-
# end
|
119
|
-
|
120
|
-
|
121
|
-
def test_self_domain
|
122
|
-
assert_equal "google.com", PublicSuffix.domain("google.com")
|
123
|
-
assert_equal "google.com", PublicSuffix.domain("www.google.com")
|
124
|
-
assert_equal "google.co.uk", PublicSuffix.domain("google.co.uk")
|
125
|
-
assert_equal "google.co.uk", PublicSuffix.domain("www.google.co.uk")
|
126
|
-
end
|
127
|
-
|
128
|
-
def test_self_domain_with_notlisted_name
|
129
|
-
assert_equal "example.tldnotlisted", PublicSuffix.domain("example.tldnotlisted")
|
130
|
-
end
|
131
|
-
|
132
|
-
def test_self_domain_with_unallowed_name
|
133
|
-
assert_nil PublicSuffix.domain("example.bd")
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_self_domain_with_blank_sld
|
137
|
-
assert_nil PublicSuffix.domain("com")
|
138
|
-
assert_nil PublicSuffix.domain(".com")
|
139
|
-
end
|
140
|
-
|
141
|
-
|
142
|
-
def test_self_normalize
|
143
|
-
[
|
144
|
-
["com", "com"],
|
145
|
-
["example.com", "example.com"],
|
146
|
-
["www.example.com", "www.example.com"],
|
147
|
-
|
148
|
-
["example.com.", "example.com"], # strip FQDN
|
149
|
-
[" example.com ", "example.com"], # strip spaces
|
150
|
-
["Example.COM", "example.com"], # downcase
|
151
|
-
].each do |input, output|
|
152
|
-
assert_equal output, PublicSuffix.normalize(input)
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
def test_normalize_blank
|
157
|
-
[
|
158
|
-
nil,
|
159
|
-
"",
|
160
|
-
" ",
|
161
|
-
].each do |input|
|
162
|
-
error = PublicSuffix.normalize(input)
|
163
|
-
assert_instance_of PublicSuffix::DomainInvalid, error
|
164
|
-
assert_equal "Name is blank", error.message
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
def test_normalize_scheme
|
169
|
-
[
|
170
|
-
"https://google.com",
|
171
|
-
].each do |input|
|
172
|
-
error = PublicSuffix.normalize(input)
|
173
|
-
assert_instance_of PublicSuffix::DomainInvalid, error
|
174
|
-
assert_match(/scheme/, error.message)
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
def test_normalize_leading_dot
|
179
|
-
[
|
180
|
-
".google.com",
|
181
|
-
].each do |input|
|
182
|
-
error = PublicSuffix.normalize(input)
|
183
|
-
assert_instance_of PublicSuffix::DomainInvalid, error
|
184
|
-
assert_match "Name starts with a dot", error.message
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
end
|