public_suffix 1.0.0.rc1
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.
- data/.gemtest +0 -0
- data/.gitignore +4 -0
- data/.travis.yml +11 -0
- data/.yardopts +2 -0
- data/CHANGELOG.md +134 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +22 -0
- data/LICENSE +22 -0
- data/README.md +151 -0
- data/Rakefile +109 -0
- data/lib/public_suffix.rb +134 -0
- data/lib/public_suffix/definitions.txt +5190 -0
- data/lib/public_suffix/domain.rb +387 -0
- data/lib/public_suffix/errors.rb +57 -0
- data/lib/public_suffix/list.rb +283 -0
- data/lib/public_suffix/rule.rb +373 -0
- data/lib/public_suffix/rule_list.rb +14 -0
- data/lib/public_suffix/version.rb +23 -0
- data/public_suffix.gemspec +37 -0
- data/test/acceptance_test.rb +36 -0
- data/test/test_helper.rb +6 -0
- data/test/unit/domain_test.rb +170 -0
- data/test/unit/errors_test.rb +23 -0
- data/test/unit/list_test.rb +193 -0
- data/test/unit/public_suffix_test.rb +85 -0
- data/test/unit/rule_test.rb +307 -0
- metadata +111 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class AcceptanceTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
ValidCases = {
|
6
|
+
"google.com" => [nil, "google", "com"],
|
7
|
+
"foo.google.com" => ["foo", "google", "com"],
|
8
|
+
|
9
|
+
"verybritish.co.uk" => [nil, "verybritish", "co.uk"],
|
10
|
+
"foo.verybritish.co.uk" => ["foo", "verybritish", "co.uk"],
|
11
|
+
|
12
|
+
"parliament.uk" => [nil, "parliament", "uk"],
|
13
|
+
"foo.parliament.uk" => ["foo", "parliament", "uk"],
|
14
|
+
}
|
15
|
+
|
16
|
+
def test_valid
|
17
|
+
ValidCases.each do |name, results|
|
18
|
+
domain = PublicSuffix.parse(name)
|
19
|
+
trd, sld, tld = results
|
20
|
+
assert_equal tld, domain.tld, "Invalid tld for '#{name}'"
|
21
|
+
assert_equal sld, domain.sld, "Invalid sld for '#{name}'"
|
22
|
+
assert_equal trd, domain.trd, "Invalid trd for '#{name}'"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
InvalidCases = {
|
27
|
+
"nic.ke" => PublicSuffix::DomainNotAllowed,
|
28
|
+
}
|
29
|
+
|
30
|
+
def test_invalid
|
31
|
+
InvalidCases.each do |name, error|
|
32
|
+
assert_raise(error) { PublicSuffix.parse(name) }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,170 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PublicSuffix::DomainTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@klass = PublicSuffix::Domain
|
7
|
+
end
|
8
|
+
|
9
|
+
# Tokenizes given input into labels.
|
10
|
+
def test_self_domain_to_labels
|
11
|
+
assert_equal %w( com live spaces someone ),
|
12
|
+
PublicSuffix::Domain.domain_to_labels("someone.spaces.live.com")
|
13
|
+
assert_equal %w( com zoho wiki leontina23samiko ),
|
14
|
+
PublicSuffix::Domain.domain_to_labels("leontina23samiko.wiki.zoho.com")
|
15
|
+
end
|
16
|
+
|
17
|
+
# Converts input into String.
|
18
|
+
def test_self_domain_to_labels_converts_input_to_string
|
19
|
+
assert_equal %w( com live spaces someone ),
|
20
|
+
PublicSuffix::Domain.domain_to_labels(:"someone.spaces.live.com")
|
21
|
+
end
|
22
|
+
|
23
|
+
# Ignores trailing .
|
24
|
+
def test_self_domain_to_labels_ignores_trailing_dot
|
25
|
+
assert_equal %w( com live spaces someone ),
|
26
|
+
PublicSuffix::Domain.domain_to_labels("someone.spaces.live.com")
|
27
|
+
assert_equal %w( com live spaces someone ),
|
28
|
+
PublicSuffix::Domain.domain_to_labels(:"someone.spaces.live.com")
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
def test_initialize_with_tld
|
33
|
+
domain = @klass.new("com")
|
34
|
+
assert_equal "com", domain.tld
|
35
|
+
assert_equal nil, domain.sld
|
36
|
+
assert_equal nil, domain.trd
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_initialize_with_tld_and_sld
|
40
|
+
domain = @klass.new("com", "google")
|
41
|
+
assert_equal "com", domain.tld
|
42
|
+
assert_equal "google", domain.sld
|
43
|
+
assert_equal nil, domain.trd
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_initialize_with_tld_and_sld_and_trd
|
47
|
+
domain = @klass.new("com", "google", "www")
|
48
|
+
assert_equal "com", domain.tld
|
49
|
+
assert_equal "google", domain.sld
|
50
|
+
assert_equal "www", domain.trd
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
def test_to_s
|
55
|
+
assert_equal "com", @klass.new("com").to_s
|
56
|
+
assert_equal "google.com", @klass.new("com", "google").to_s
|
57
|
+
assert_equal "www.google.com", @klass.new("com", "google", "www").to_s
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_to_a
|
61
|
+
assert_equal [nil, nil, "com"], @klass.new("com").to_a
|
62
|
+
assert_equal [nil, "google", "com"], @klass.new("com", "google").to_a
|
63
|
+
assert_equal ["www", "google", "com"], @klass.new("com", "google", "www").to_a
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
def test_tld
|
68
|
+
assert_equal "com", @klass.new("com", "google", "www").tld
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_sld
|
72
|
+
assert_equal "google", @klass.new("com", "google", "www").sld
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_trd
|
76
|
+
assert_equal "www", @klass.new("com", "google", "www").trd
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
def test_name
|
81
|
+
assert_equal "com", @klass.new("com").name
|
82
|
+
assert_equal "google.com", @klass.new("com", "google").name
|
83
|
+
assert_equal "www.google.com", @klass.new("com", "google", "www").name
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_domain
|
87
|
+
assert_equal nil, @klass.new("com").domain
|
88
|
+
assert_equal nil, @klass.new("zip").domain
|
89
|
+
assert_equal "google.com", @klass.new("com", "google").domain
|
90
|
+
assert_equal "google.zip", @klass.new("zip", "google").domain
|
91
|
+
assert_equal "google.com", @klass.new("com", "google", "www").domain
|
92
|
+
assert_equal "google.zip", @klass.new("zip", "google", "www").domain
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_subdomain
|
96
|
+
assert_equal nil, @klass.new("com").subdomain
|
97
|
+
assert_equal nil, @klass.new("zip").subdomain
|
98
|
+
assert_equal nil, @klass.new("com", "google").subdomain
|
99
|
+
assert_equal nil, @klass.new("zip", "google").subdomain
|
100
|
+
assert_equal "www.google.com", @klass.new("com", "google", "www").subdomain
|
101
|
+
assert_equal "www.google.zip", @klass.new("zip", "google", "www").subdomain
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_rule
|
105
|
+
assert_equal nil, @klass.new("zip").rule
|
106
|
+
assert_equal PublicSuffix::Rule.factory("com"), @klass.new("com").rule
|
107
|
+
assert_equal PublicSuffix::Rule.factory("com"), @klass.new("com", "google").rule
|
108
|
+
assert_equal PublicSuffix::Rule.factory("com"), @klass.new("com", "google", "www").rule
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
def test_domain_question
|
113
|
+
assert @klass.new("com", "google").domain?
|
114
|
+
assert @klass.new("zip", "google").domain?
|
115
|
+
assert @klass.new("com", "google", "www").domain?
|
116
|
+
assert !@klass.new("com").domain?
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_subdomain_question
|
120
|
+
assert @klass.new("com", "google", "www").subdomain?
|
121
|
+
assert @klass.new("zip", "google", "www").subdomain?
|
122
|
+
assert !@klass.new("com").subdomain?
|
123
|
+
assert !@klass.new("com", "google").subdomain?
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_is_a_domain_question
|
127
|
+
assert @klass.new("com", "google").is_a_domain?
|
128
|
+
assert @klass.new("zip", "google").is_a_domain?
|
129
|
+
assert !@klass.new("com", "google", "www").is_a_domain?
|
130
|
+
assert !@klass.new("com").is_a_domain?
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_is_a_subdomain_question
|
134
|
+
assert @klass.new("com", "google", "www").is_a_subdomain?
|
135
|
+
assert @klass.new("zip", "google", "www").is_a_subdomain?
|
136
|
+
assert !@klass.new("com").is_a_subdomain?
|
137
|
+
assert !@klass.new("com", "google").is_a_subdomain?
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_valid_question
|
141
|
+
assert !@klass.new("com").valid?
|
142
|
+
assert @klass.new("com", "example").valid?
|
143
|
+
assert @klass.new("com", "example", "www").valid?
|
144
|
+
|
145
|
+
# not-assigned
|
146
|
+
assert !@klass.new("zip").valid?
|
147
|
+
assert !@klass.new("zip", "example").valid?
|
148
|
+
assert !@klass.new("zip", "example", "www").valid?
|
149
|
+
|
150
|
+
# not-allowed
|
151
|
+
assert !@klass.new("ke").valid?
|
152
|
+
assert !@klass.new("ke", "example").valid?
|
153
|
+
assert @klass.new("ke", "example", "www").valid?
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_valid_domain_question
|
157
|
+
assert @klass.new("com", "google").valid_domain?
|
158
|
+
assert !@klass.new("zip", "google").valid_domain?
|
159
|
+
assert @klass.new("com", "google", "www").valid_domain?
|
160
|
+
assert !@klass.new("com").valid_domain?
|
161
|
+
end
|
162
|
+
|
163
|
+
def test_valid_subdomain_question
|
164
|
+
assert @klass.new("com", "google", "www").valid_subdomain?
|
165
|
+
assert !@klass.new("zip", "google", "www").valid_subdomain?
|
166
|
+
assert !@klass.new("com").valid_subdomain?
|
167
|
+
assert !@klass.new("com", "google").valid_subdomain?
|
168
|
+
end
|
169
|
+
|
170
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ErrorsTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
# Inherits from StandardError
|
6
|
+
def test_error_inheritance
|
7
|
+
assert_kind_of StandardError,
|
8
|
+
PublicSuffix::Error.new
|
9
|
+
end
|
10
|
+
|
11
|
+
# Inherits from PublicSuffix::Error
|
12
|
+
def test_domain_invalid_inheritance
|
13
|
+
assert_kind_of PublicSuffix::Error,
|
14
|
+
PublicSuffix::DomainInvalid.new
|
15
|
+
end
|
16
|
+
|
17
|
+
# Inherits from PublicSuffix::DomainInvalid
|
18
|
+
def test_domain_not_allowed_inheritance
|
19
|
+
assert_kind_of PublicSuffix::DomainInvalid,
|
20
|
+
PublicSuffix::DomainNotAllowed.new
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,193 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PublicSuffix::ListTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@list = PublicSuffix::List.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
PublicSuffix::List.clear
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def test_initialize
|
15
|
+
assert_instance_of PublicSuffix::List, @list
|
16
|
+
assert_equal 0, @list.length
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_initialize_create_index_when_empty
|
20
|
+
assert_equal({}, @list.indexes)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_indexes
|
24
|
+
@list = PublicSuffix::List.parse(<<EOS)
|
25
|
+
// com : http://en.wikipedia.org/wiki/.com
|
26
|
+
com
|
27
|
+
|
28
|
+
// uk : http://en.wikipedia.org/wiki/.uk
|
29
|
+
*.uk
|
30
|
+
*.sch.uk
|
31
|
+
!bl.uk
|
32
|
+
!british-library.uk
|
33
|
+
EOS
|
34
|
+
|
35
|
+
assert !@list.indexes.empty?
|
36
|
+
assert_equal [1,2,3,4], @list.indexes.delete('uk')
|
37
|
+
assert_equal [0], @list.indexes.delete('com')
|
38
|
+
assert @list.indexes.empty?
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
def test_equality_with_self
|
43
|
+
list = PublicSuffix::List.new
|
44
|
+
assert_equal list, list
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_equality_with_internals
|
48
|
+
rule = PublicSuffix::Rule.factory("com")
|
49
|
+
assert_equal PublicSuffix::List.new.add(rule), PublicSuffix::List.new.add(rule)
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
def test_add
|
54
|
+
assert_equal @list, @list.add(PublicSuffix::Rule.factory(""))
|
55
|
+
assert_equal @list, @list << PublicSuffix::Rule.factory("")
|
56
|
+
assert_equal 2, @list.length
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_add_should_recreate_index
|
60
|
+
@list = PublicSuffix::List.parse("com")
|
61
|
+
assert_equal PublicSuffix::Rule.factory("com"), @list.find("google.com")
|
62
|
+
assert_equal nil, @list.find("google.net")
|
63
|
+
|
64
|
+
@list << PublicSuffix::Rule.factory("net")
|
65
|
+
assert_equal PublicSuffix::Rule.factory("com"), @list.find("google.com")
|
66
|
+
assert_equal PublicSuffix::Rule.factory("net"), @list.find("google.net")
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_empty?
|
70
|
+
assert @list.empty?
|
71
|
+
@list.add(PublicSuffix::Rule.factory(""))
|
72
|
+
assert !@list.empty?
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_size
|
76
|
+
assert_equal 0, @list.length
|
77
|
+
assert_equal @list, @list.add(PublicSuffix::Rule.factory(""))
|
78
|
+
assert_equal 1, @list.length
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_clear
|
82
|
+
assert_equal 0, @list.length
|
83
|
+
assert_equal @list, @list.add(PublicSuffix::Rule.factory(""))
|
84
|
+
assert_equal 1, @list.length
|
85
|
+
assert_equal @list, @list.clear
|
86
|
+
assert_equal 0, @list.length
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
def test_find
|
91
|
+
@list = PublicSuffix::List.parse(<<EOS)
|
92
|
+
// com : http://en.wikipedia.org/wiki/.com
|
93
|
+
com
|
94
|
+
|
95
|
+
// uk : http://en.wikipedia.org/wiki/.uk
|
96
|
+
*.uk
|
97
|
+
*.sch.uk
|
98
|
+
!bl.uk
|
99
|
+
!british-library.uk
|
100
|
+
EOS
|
101
|
+
assert_equal PublicSuffix::Rule.factory("com"), @list.find("google.com")
|
102
|
+
assert_equal PublicSuffix::Rule.factory("com"), @list.find("foo.google.com")
|
103
|
+
assert_equal PublicSuffix::Rule.factory("*.uk"), @list.find("google.uk")
|
104
|
+
assert_equal PublicSuffix::Rule.factory("*.uk"), @list.find("google.co.uk")
|
105
|
+
assert_equal PublicSuffix::Rule.factory("*.uk"), @list.find("foo.google.co.uk")
|
106
|
+
assert_equal PublicSuffix::Rule.factory("!british-library.uk"), @list.find("british-library.uk")
|
107
|
+
assert_equal PublicSuffix::Rule.factory("!british-library.uk"), @list.find("foo.british-library.uk")
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_select
|
111
|
+
@list = PublicSuffix::List.parse(<<EOS)
|
112
|
+
// com : http://en.wikipedia.org/wiki/.com
|
113
|
+
com
|
114
|
+
|
115
|
+
// uk : http://en.wikipedia.org/wiki/.uk
|
116
|
+
*.uk
|
117
|
+
*.sch.uk
|
118
|
+
!bl.uk
|
119
|
+
!british-library.uk
|
120
|
+
EOS
|
121
|
+
assert_equal 2, @list.select("british-library.uk").size
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
def test_self_default_getter
|
126
|
+
assert_equal nil, PublicSuffix::List.send(:class_variable_get, :"@@default")
|
127
|
+
PublicSuffix::List.default
|
128
|
+
assert_not_equal nil, PublicSuffix::List.send(:class_variable_get, :"@@default")
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_self_default_setter
|
132
|
+
PublicSuffix::List.default
|
133
|
+
assert_not_equal nil, PublicSuffix::List.send(:class_variable_get, :"@@default")
|
134
|
+
PublicSuffix::List.default = nil
|
135
|
+
assert_equal nil, PublicSuffix::List.send(:class_variable_get, :"@@default")
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_self_clear
|
139
|
+
PublicSuffix::List.default
|
140
|
+
assert_not_equal nil, PublicSuffix::List.send(:class_variable_get, :"@@default")
|
141
|
+
PublicSuffix::List.clear
|
142
|
+
assert_equal nil, PublicSuffix::List.send(:class_variable_get, :"@@default")
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_self_reload
|
146
|
+
PublicSuffix::List.default
|
147
|
+
PublicSuffix::List.expects(:default_definition).returns("")
|
148
|
+
|
149
|
+
PublicSuffix::List.reload
|
150
|
+
assert_equal PublicSuffix::List.new, PublicSuffix::List.default
|
151
|
+
end
|
152
|
+
|
153
|
+
|
154
|
+
def test_self_parse
|
155
|
+
list = PublicSuffix::List.parse(<<EOS)
|
156
|
+
// ***** BEGIN LICENSE BLOCK *****
|
157
|
+
// Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
158
|
+
//
|
159
|
+
// ***** END LICENSE BLOCK *****
|
160
|
+
|
161
|
+
// ac : http://en.wikipedia.org/wiki/.ac
|
162
|
+
ac
|
163
|
+
com.ac
|
164
|
+
|
165
|
+
// ad : http://en.wikipedia.org/wiki/.ad
|
166
|
+
ad
|
167
|
+
|
168
|
+
// ar : http://en.wikipedia.org/wiki/.ar
|
169
|
+
*.ar
|
170
|
+
!congresodelalengua3.ar
|
171
|
+
EOS
|
172
|
+
|
173
|
+
assert_instance_of PublicSuffix::List, list
|
174
|
+
assert_equal 5, list.length
|
175
|
+
assert_equal %w(ac com.ac ad *.ar !congresodelalengua3.ar).map { |name| PublicSuffix::Rule.factory(name) }, list.to_a
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_self_parse_should_create_cache
|
179
|
+
list = PublicSuffix::List.parse(<<EOS)
|
180
|
+
// com : http://en.wikipedia.org/wiki/.com
|
181
|
+
com
|
182
|
+
|
183
|
+
// uk : http://en.wikipedia.org/wiki/.uk
|
184
|
+
*.uk
|
185
|
+
*.sch.uk
|
186
|
+
!bl.uk
|
187
|
+
!british-library.uk
|
188
|
+
EOS
|
189
|
+
|
190
|
+
assert_equal PublicSuffix::Rule.factory("com"), list.find("google.com")
|
191
|
+
end
|
192
|
+
|
193
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PublicSuffixTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_self_parse_a_domain_with_tld_and_sld
|
6
|
+
domain = PublicSuffix.parse("example.com")
|
7
|
+
assert_instance_of PublicSuffix::Domain, domain
|
8
|
+
assert_equal "com", domain.tld
|
9
|
+
assert_equal "example", domain.sld
|
10
|
+
assert_equal nil, domain.trd
|
11
|
+
|
12
|
+
domain = PublicSuffix.parse("example.co.uk")
|
13
|
+
assert_instance_of PublicSuffix::Domain, domain
|
14
|
+
assert_equal "co.uk", domain.tld
|
15
|
+
assert_equal "example", domain.sld
|
16
|
+
assert_equal nil, domain.trd
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_self_parse_a_domain_with_tld_and_sld_and_trd
|
20
|
+
domain = PublicSuffix.parse("alpha.example.com")
|
21
|
+
assert_instance_of PublicSuffix::Domain, domain
|
22
|
+
assert_equal "com", domain.tld
|
23
|
+
assert_equal "example", domain.sld
|
24
|
+
assert_equal "alpha", domain.trd
|
25
|
+
|
26
|
+
domain = PublicSuffix.parse("alpha.example.co.uk")
|
27
|
+
assert_instance_of PublicSuffix::Domain, domain
|
28
|
+
assert_equal "co.uk", domain.tld
|
29
|
+
assert_equal "example", domain.sld
|
30
|
+
assert_equal "alpha", domain.trd
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_self_parse_a_domain_with_tld_and_sld_and_4rd
|
34
|
+
domain = PublicSuffix.parse("one.two.example.com")
|
35
|
+
assert_instance_of PublicSuffix::Domain, domain
|
36
|
+
assert_equal "com", domain.tld
|
37
|
+
assert_equal "example", domain.sld
|
38
|
+
assert_equal "one.two", domain.trd
|
39
|
+
|
40
|
+
domain = PublicSuffix.parse("one.two.example.co.uk")
|
41
|
+
assert_instance_of PublicSuffix::Domain, domain
|
42
|
+
assert_equal "co.uk", domain.tld
|
43
|
+
assert_equal "example", domain.sld
|
44
|
+
assert_equal "one.two", domain.trd
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_self_parse_a_fully_qualified_domain_name
|
48
|
+
domain = PublicSuffix.parse("www.example.com.")
|
49
|
+
assert_instance_of PublicSuffix::Domain, domain
|
50
|
+
assert_equal "com", domain.tld
|
51
|
+
assert_equal "example", domain.sld
|
52
|
+
assert_equal "www", domain.trd
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_self_parse_should_raise_with_invalid_domain
|
56
|
+
error = assert_raise(PublicSuffix::DomainInvalid) { PublicSuffix.parse("example.zip") }
|
57
|
+
assert_match %r{example\.zip}, error.message
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_self_parse_should_raise_with_unallowed_domain
|
61
|
+
error = assert_raise(PublicSuffix::DomainNotAllowed) { PublicSuffix.parse("example.ke") }
|
62
|
+
assert_match %r{example\.ke}, error.message
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
def test_self_valid
|
67
|
+
assert PublicSuffix.valid?("google.com")
|
68
|
+
assert PublicSuffix.valid?("www.google.com")
|
69
|
+
assert PublicSuffix.valid?("google.co.uk")
|
70
|
+
assert PublicSuffix.valid?("www.google.co.uk")
|
71
|
+
end
|
72
|
+
|
73
|
+
# Returns false when domain has an invalid TLD
|
74
|
+
def test_self_valid_with_invalid_tld
|
75
|
+
assert !PublicSuffix.valid?("google.zip")
|
76
|
+
assert !PublicSuffix.valid?("www.google.zip")
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_self_valid_with_fully_qualified_domain_name
|
80
|
+
assert PublicSuffix.valid?("google.com.")
|
81
|
+
assert PublicSuffix.valid?("google.co.uk.")
|
82
|
+
assert !PublicSuffix.valid?("google.zip.")
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|