public_suffix_service 0.9.0 → 0.9.1
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/.gitignore +0 -1
- data/.travis.yml +11 -0
- data/.yardopts +1 -1
- data/CHANGELOG.md +11 -0
- data/Gemfile.lock +6 -4
- data/README.md +8 -135
- data/Rakefile +23 -31
- data/lib/public_suffix.rb +134 -0
- data/lib/{public_suffix_service → public_suffix}/definitions.txt +282 -1
- data/lib/{public_suffix_service → public_suffix}/domain.rb +50 -50
- data/lib/{public_suffix_service → public_suffix}/errors.rb +12 -12
- data/lib/{public_suffix_service/rule_list.rb → public_suffix/list.rb} +54 -55
- data/lib/{public_suffix_service → public_suffix}/rule.rb +29 -29
- data/lib/public_suffix/rule_list.rb +14 -0
- data/lib/{public_suffix_service → public_suffix}/version.rb +4 -4
- data/lib/public_suffix_service.rb +5 -121
- data/public_suffix_service.gemspec +18 -15
- data/test/acceptance_test.rb +3 -3
- data/test/test_helper.rb +2 -6
- data/test/{public_suffix_service → unit}/domain_test.rb +11 -11
- 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/{public_suffix_service → unit}/rule_test.rb +22 -22
- metadata +66 -59
- data/test/public_suffix_service/errors_test.rb +0 -23
- data/test/public_suffix_service/rule_list_test.rb +0 -193
- data/test/public_suffix_service_test.rb +0 -85
@@ -0,0 +1,14 @@
|
|
1
|
+
#--
|
2
|
+
# Public Suffix
|
3
|
+
#
|
4
|
+
# Domain name parser based on the Public Suffix List.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2009-2011 Simone Carletti <weppos@weppos.net>
|
7
|
+
#++
|
8
|
+
|
9
|
+
|
10
|
+
warn("DEPRECATION WARNING: The PublicSuffix::RuleList object has been deprecated and will be removed in PublicSuffix 1.0. Please use PublicSuffix::List instead.")
|
11
|
+
|
12
|
+
module PublicSuffix
|
13
|
+
RuleList = List
|
14
|
+
end
|
@@ -1,18 +1,18 @@
|
|
1
1
|
#--
|
2
|
-
# Public Suffix
|
2
|
+
# Public Suffix
|
3
3
|
#
|
4
|
-
# Domain
|
4
|
+
# Domain name parser based on the Public Suffix List.
|
5
5
|
#
|
6
6
|
# Copyright (c) 2009-2011 Simone Carletti <weppos@weppos.net>
|
7
7
|
#++
|
8
8
|
|
9
9
|
|
10
|
-
module
|
10
|
+
module PublicSuffix
|
11
11
|
|
12
12
|
module Version
|
13
13
|
MAJOR = 0
|
14
14
|
MINOR = 9
|
15
|
-
PATCH =
|
15
|
+
PATCH = 1
|
16
16
|
BUILD = nil
|
17
17
|
|
18
18
|
STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join(".")
|
@@ -1,130 +1,14 @@
|
|
1
1
|
#--
|
2
|
-
# Public Suffix
|
2
|
+
# Public Suffix
|
3
3
|
#
|
4
|
-
# Domain
|
4
|
+
# Domain name parser based on the Public Suffix List.
|
5
5
|
#
|
6
6
|
# Copyright (c) 2009-2011 Simone Carletti <weppos@weppos.net>
|
7
7
|
#++
|
8
8
|
|
9
9
|
|
10
|
-
|
11
|
-
require 'public_suffix_service/version'
|
12
|
-
require 'public_suffix_service/errors'
|
13
|
-
require 'public_suffix_service/rule'
|
14
|
-
require 'public_suffix_service/rule_list'
|
10
|
+
warn("DEPRECATION WARNING: The PublicSuffixService gem is now known as PublicSuffix. Please install `public_suffix` instead of `public_suffix_service`.")
|
15
11
|
|
12
|
+
require 'public_suffix'
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
NAME = "Public Suffix Service"
|
20
|
-
GEM = "public_suffix_service"
|
21
|
-
AUTHORS = ["Simone Carletti <weppos@weppos.net>"]
|
22
|
-
|
23
|
-
|
24
|
-
# Parses +domain+ and returns the
|
25
|
-
# {PublicSuffixService::Domain} instance.
|
26
|
-
#
|
27
|
-
# Parsing uses the default {PublicSuffixService::RuleList}.
|
28
|
-
#
|
29
|
-
# @param [String, #to_s] domain
|
30
|
-
# The domain name or fully qualified domain name to parse.
|
31
|
-
#
|
32
|
-
# @return [PublicSuffixService::Domain]
|
33
|
-
#
|
34
|
-
# @example Parse a valid domain
|
35
|
-
# PublicSuffixService.parse("google.com")
|
36
|
-
# # => #<PubliSuffixService::Domain ...>
|
37
|
-
#
|
38
|
-
# @example Parse a valid subdomain
|
39
|
-
# PublicSuffixService.parse("www.google.com")
|
40
|
-
# # => #<PubliSuffixService::Domain ...>
|
41
|
-
#
|
42
|
-
# @example Parse a fully qualified domain
|
43
|
-
# PublicSuffixService.parse("google.com.")
|
44
|
-
# # => #<PubliSuffixService::Domain ...>
|
45
|
-
#
|
46
|
-
# @example Parse a fully qualified domain (subdomain)
|
47
|
-
# PublicSuffixService.parse("www.google.com.")
|
48
|
-
# # => #<PubliSuffixService::Domain ...>
|
49
|
-
#
|
50
|
-
# @example Parse an invalid domain
|
51
|
-
# PublicSuffixService.parse("x.yz")
|
52
|
-
# # => PublicSuffixService::DomainInvalid
|
53
|
-
#
|
54
|
-
# @example Parse an URL (not supported, only domains)
|
55
|
-
# PublicSuffixService.parse("http://www.google.com")
|
56
|
-
# # => PublicSuffixService::DomainInvalid
|
57
|
-
#
|
58
|
-
# @raise [PublicSuffixService::Error]
|
59
|
-
# If domain is not a valid domain.
|
60
|
-
# @raise [PublicSuffixService::DomainNotAllowed]
|
61
|
-
# If a rule for +domain+ is found, but the rule
|
62
|
-
# doesn't allow +domain+.
|
63
|
-
#
|
64
|
-
def self.parse(domain)
|
65
|
-
rule = RuleList.default.find(domain)
|
66
|
-
if rule.nil?
|
67
|
-
raise DomainInvalid, "`#{domain}' is not a valid domain"
|
68
|
-
end
|
69
|
-
if !rule.allow?(domain)
|
70
|
-
raise DomainNotAllowed, "`#{domain}' is not allowed according to Registry policy"
|
71
|
-
end
|
72
|
-
|
73
|
-
left, right = rule.decompose(domain)
|
74
|
-
|
75
|
-
parts = left.split(".")
|
76
|
-
# If we have 0 parts left, there is just a tld and no domain or subdomain
|
77
|
-
# If we have 1 part left, there is just a tld, domain and not subdomain
|
78
|
-
# If we have 2 parts left, the last part is the domain, the other parts (combined) are the subdomain
|
79
|
-
tld = right
|
80
|
-
sld = parts.empty? ? nil : parts.pop
|
81
|
-
trd = parts.empty? ? nil : parts.join(".")
|
82
|
-
|
83
|
-
Domain.new(tld, sld, trd)
|
84
|
-
end
|
85
|
-
|
86
|
-
# Checks whether +domain+ is assigned and allowed,
|
87
|
-
# without actually parsing it.
|
88
|
-
#
|
89
|
-
# This method doesn't care whether domain is a domain or subdomain.
|
90
|
-
# The validation is performed using the default {PublicSuffixService::RuleList}.
|
91
|
-
#
|
92
|
-
# @param [String, #to_s] domain
|
93
|
-
# The domain name or fully qualified domain name to validate.
|
94
|
-
#
|
95
|
-
# @return [Boolean]
|
96
|
-
#
|
97
|
-
# @example Validate a valid domain
|
98
|
-
# PublicSuffixService.valid?("example.com")
|
99
|
-
# # => true
|
100
|
-
#
|
101
|
-
# @example Validate a valid subdomain
|
102
|
-
# PublicSuffixService.valid?("www.example.com")
|
103
|
-
# # => true
|
104
|
-
#
|
105
|
-
# @example Validate a not-assigned domain
|
106
|
-
# PublicSuffixService.valid?("example.zip")
|
107
|
-
# # => false
|
108
|
-
#
|
109
|
-
# @example Validate a not-allowed domain
|
110
|
-
# PublicSuffixService.valid?("example.do")
|
111
|
-
# # => false
|
112
|
-
# PublicSuffixService.valid?("www.example.do")
|
113
|
-
# # => true
|
114
|
-
#
|
115
|
-
# @example Validate a fully qualified domain
|
116
|
-
# PublicSuffixService.valid?("google.com.")
|
117
|
-
# # => true
|
118
|
-
# PublicSuffixService.valid?("www.google.com.")
|
119
|
-
# # => true
|
120
|
-
#
|
121
|
-
# @example Check an URL (which is not a valid domain)
|
122
|
-
# PublicSuffixService.valid?("http://www.example.com")
|
123
|
-
# # => false
|
124
|
-
#
|
125
|
-
def self.valid?(domain)
|
126
|
-
rule = RuleList.default.find(domain)
|
127
|
-
!rule.nil? && rule.allow?(domain)
|
128
|
-
end
|
129
|
-
|
130
|
-
end
|
14
|
+
PublicSuffixService = PublicSuffix
|
@@ -1,34 +1,37 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
|
-
s.name =
|
5
|
-
s.version = "0.
|
4
|
+
s.name = "public_suffix_service"
|
5
|
+
s.version = "0.9.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = [
|
9
|
-
s.date =
|
10
|
-
s.description =
|
11
|
-
s.email =
|
12
|
-
s.files = [
|
13
|
-
s.homepage =
|
14
|
-
s.require_paths = [
|
8
|
+
s.authors = ["Simone Carletti"]
|
9
|
+
s.date = "2011-12-24"
|
10
|
+
s.description = "PublicSuffixService gem is now known as PublicSuffix."
|
11
|
+
s.email = "weppos@weppos.net"
|
12
|
+
s.files = [".gemtest", ".gitignore", ".travis.yml", ".yardopts", "CHANGELOG.md", "Gemfile", "Gemfile.lock", "LICENSE", "README.md", "Rakefile", "lib/public_suffix.rb", "lib/public_suffix/definitions.txt", "lib/public_suffix/domain.rb", "lib/public_suffix/errors.rb", "lib/public_suffix/list.rb", "lib/public_suffix/rule.rb", "lib/public_suffix/rule_list.rb", "lib/public_suffix/version.rb", "lib/public_suffix_service.rb", "public_suffix_service.gemspec", "test/acceptance_test.rb", "test/test_helper.rb", "test/unit/domain_test.rb", "test/unit/errors_test.rb", "test/unit/list_test.rb", "test/unit/public_suffix_test.rb", "test/unit/rule_test.rb"]
|
13
|
+
s.homepage = "http://www.simonecarletti.com/code/public_suffix"
|
14
|
+
s.require_paths = ["lib"]
|
15
15
|
s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
|
16
|
-
s.rubygems_version =
|
17
|
-
s.summary =
|
18
|
-
s.test_files = [
|
16
|
+
s.rubygems_version = "1.8.11"
|
17
|
+
s.summary = "Domain name parser based in the Public Suffix List."
|
18
|
+
s.test_files = ["test/acceptance_test.rb", "test/test_helper.rb", "test/unit/domain_test.rb", "test/unit/errors_test.rb", "test/unit/list_test.rb", "test/unit/public_suffix_test.rb", "test/unit/rule_test.rb"]
|
19
19
|
|
20
20
|
if s.respond_to? :specification_version then
|
21
21
|
s.specification_version = 3
|
22
22
|
|
23
23
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
24
|
-
s.add_development_dependency(%q<
|
24
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
25
|
+
s.add_development_dependency(%q<mocha>, [">= 0"])
|
25
26
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
26
27
|
else
|
27
|
-
s.add_dependency(%q<
|
28
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
29
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
28
30
|
s.add_dependency(%q<yard>, [">= 0"])
|
29
31
|
end
|
30
32
|
else
|
31
|
-
s.add_dependency(%q<
|
33
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
34
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
32
35
|
s.add_dependency(%q<yard>, [">= 0"])
|
33
36
|
end
|
34
37
|
end
|
data/test/acceptance_test.rb
CHANGED
@@ -15,7 +15,7 @@ class AcceptanceTest < Test::Unit::TestCase
|
|
15
15
|
|
16
16
|
def test_valid
|
17
17
|
ValidCases.each do |name, results|
|
18
|
-
domain =
|
18
|
+
domain = PublicSuffix.parse(name)
|
19
19
|
trd, sld, tld = results
|
20
20
|
assert_equal tld, domain.tld, "Invalid tld for '#{name}'"
|
21
21
|
assert_equal sld, domain.sld, "Invalid sld for '#{name}'"
|
@@ -24,12 +24,12 @@ class AcceptanceTest < Test::Unit::TestCase
|
|
24
24
|
end
|
25
25
|
|
26
26
|
InvalidCases = {
|
27
|
-
"nic.ke" =>
|
27
|
+
"nic.ke" => PublicSuffix::DomainNotAllowed,
|
28
28
|
}
|
29
29
|
|
30
30
|
def test_invalid
|
31
31
|
InvalidCases.each do |name, error|
|
32
|
-
assert_raise(error) {
|
32
|
+
assert_raise(error) { PublicSuffix.parse(name) }
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
data/test/test_helper.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'test/unit'
|
3
|
-
require '
|
3
|
+
require 'mocha'
|
4
4
|
|
5
5
|
$:.unshift File.expand_path('../../lib', __FILE__)
|
6
|
-
require '
|
7
|
-
|
8
|
-
class Test::Unit::TestCase
|
9
|
-
include RR::Adapters::TestUnit
|
10
|
-
end
|
6
|
+
require 'public_suffix'
|
@@ -1,31 +1,31 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class
|
3
|
+
class PublicSuffix::DomainTest < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
-
@klass =
|
6
|
+
@klass = PublicSuffix::Domain
|
7
7
|
end
|
8
8
|
|
9
9
|
# Tokenizes given input into labels.
|
10
10
|
def test_self_domain_to_labels
|
11
11
|
assert_equal %w( com live spaces someone ),
|
12
|
-
|
12
|
+
PublicSuffix::Domain.domain_to_labels("someone.spaces.live.com")
|
13
13
|
assert_equal %w( com zoho wiki leontina23samiko ),
|
14
|
-
|
14
|
+
PublicSuffix::Domain.domain_to_labels("leontina23samiko.wiki.zoho.com")
|
15
15
|
end
|
16
16
|
|
17
17
|
# Converts input into String.
|
18
18
|
def test_self_domain_to_labels_converts_input_to_string
|
19
19
|
assert_equal %w( com live spaces someone ),
|
20
|
-
|
20
|
+
PublicSuffix::Domain.domain_to_labels(:"someone.spaces.live.com")
|
21
21
|
end
|
22
22
|
|
23
23
|
# Ignores trailing .
|
24
24
|
def test_self_domain_to_labels_ignores_trailing_dot
|
25
25
|
assert_equal %w( com live spaces someone ),
|
26
|
-
|
26
|
+
PublicSuffix::Domain.domain_to_labels("someone.spaces.live.com")
|
27
27
|
assert_equal %w( com live spaces someone ),
|
28
|
-
|
28
|
+
PublicSuffix::Domain.domain_to_labels(:"someone.spaces.live.com")
|
29
29
|
end
|
30
30
|
|
31
31
|
|
@@ -72,7 +72,7 @@ class PublicSuffixService::DomainTest < Test::Unit::TestCase
|
|
72
72
|
assert_equal "google", @klass.new("com", "google", "www").sld
|
73
73
|
end
|
74
74
|
|
75
|
-
def
|
75
|
+
def test_trd
|
76
76
|
assert_equal "www", @klass.new("com", "google", "www").trd
|
77
77
|
end
|
78
78
|
|
@@ -103,9 +103,9 @@ class PublicSuffixService::DomainTest < Test::Unit::TestCase
|
|
103
103
|
|
104
104
|
def test_rule
|
105
105
|
assert_equal nil, @klass.new("zip").rule
|
106
|
-
assert_equal
|
107
|
-
assert_equal
|
108
|
-
assert_equal
|
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
109
|
end
|
110
110
|
|
111
111
|
|
@@ -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
|