domain_name 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -125,9 +125,16 @@ class DomainName
125
125
  end
126
126
  end
127
127
 
128
- # Checks if the server represented by _domain_ is qualified to send
129
- # and receive cookies for _domain_.
130
- def cookie_domain?(domain)
128
+ # Checks if the server represented by this domain is qualified to
129
+ # send and receive cookies with a domain attribute value of
130
+ # _domain_. A true value given as the second argument represents
131
+ # cookies without a domain attribute value, in which case only
132
+ # hostname equality is checked.
133
+ def cookie_domain?(domain, host_only = false)
134
+ # RFC 6265 #5.3
135
+ # When the user agent "receives a cookie":
136
+ return self == domain if host_only
137
+
131
138
  domain = DomainName.new(domain) unless DomainName === domain
132
139
  if ipaddr?
133
140
  # RFC 6265 #5.1.3
@@ -1,3 +1,3 @@
1
1
  class DomainName
2
- VERSION = "0.5.4"
2
+ VERSION = "0.5.5"
3
3
  end
@@ -160,40 +160,77 @@ class TestDomainName < Test::Unit::TestCase
160
160
  end
161
161
 
162
162
  should "check cookie domain correctly" do
163
- [
164
- ['b.sapporo.jp', 'jp', false],
165
- ['b.sapporo.jp', 'sapporo.jp', false],
166
- ['b.sapporo.jp', 'b.sapporo.jp', false],
167
- ['b.sapporo.jp', 'a.b.sapporo.jp', false],
168
-
169
- ['b.c.sapporo.jp', 'jp', false],
170
- ['b.c.sapporo.jp', 'sapporo.jp', false],
171
- ['b.c.sapporo.jp', 'c.sapporo.jp', false],
172
- ['b.c.sapporo.jp', 'b.c.sapporo.jp', true],
173
- ['b.c.sapporo.jp', 'a.b.c.sapporo.jp', false],
174
-
175
- ['b.c.d.sapporo.jp', 'jp', false],
176
- ['b.c.d.sapporo.jp', 'sapporo.jp', false],
177
- ['b.c.d.sapporo.jp', 'd.sapporo.jp', false],
178
- ['b.c.d.sapporo.jp', 'c.d.sapporo.jp', true],
179
- ['b.c.d.sapporo.jp', 'b.c.d.sapporo.jp', true],
180
- ['b.c.d.sapporo.jp', 'a.b.c.d.sapporo.jp', false],
181
-
182
- ['city.sapporo.jp', 'jp', false],
183
- ['city.sapporo.jp', 'sapporo.jp', false],
184
- ['city.sapporo.jp', 'city.sapporo.jp', true],
185
- ['city.sapporo.jp', 'a.city.sapporo.jp', false],
186
-
187
- ['b.city.sapporo.jp', 'jp', false],
188
- ['b.city.sapporo.jp', 'sapporo.jp', false],
189
- ['b.city.sapporo.jp', 'city.sapporo.jp', true],
190
- ['b.city.sapporo.jp', 'b.city.sapporo.jp', true],
191
- ['b.city.sapporo.jp', 'a.b.city.sapporo.jp', false],
192
- ].each { |host, domain, expected|
163
+ {
164
+ 'com' => [
165
+ ['com', false],
166
+ ['example.com', false],
167
+ ['foo.example.com', false],
168
+ ['bar.foo.example.com', false],
169
+ ],
170
+
171
+ 'example.com' => [
172
+ ['com', false],
173
+ ['example.com', true],
174
+ ['foo.example.com', false],
175
+ ['bar.foo.example.com', false],
176
+ ],
177
+
178
+ 'foo.example.com' => [
179
+ ['com', false],
180
+ ['example.com', true],
181
+ ['foo.example.com', true],
182
+ ['foo.Example.com', true],
183
+ ['bar.foo.example.com', false],
184
+ ['bar.Foo.Example.com', false],
185
+ ],
186
+
187
+ 'b.sapporo.jp' => [
188
+ ['jp', false],
189
+ ['sapporo.jp', false],
190
+ ['b.sapporo.jp', false],
191
+ ['a.b.sapporo.jp', false],
192
+ ],
193
+
194
+ 'b.c.sapporo.jp' => [
195
+ ['jp', false],
196
+ ['sapporo.jp', false],
197
+ ['c.sapporo.jp', false],
198
+ ['b.c.sapporo.jp', true],
199
+ ['a.b.c.sapporo.jp', false],
200
+ ],
201
+
202
+ 'b.c.d.sapporo.jp' => [
203
+ ['jp', false],
204
+ ['sapporo.jp', false],
205
+ ['d.sapporo.jp', false],
206
+ ['c.d.sapporo.jp', true],
207
+ ['b.c.d.sapporo.jp', true],
208
+ ['a.b.c.d.sapporo.jp', false],
209
+ ],
210
+
211
+ 'city.sapporo.jp' => [
212
+ ['jp', false],
213
+ ['sapporo.jp', false],
214
+ ['city.sapporo.jp', true],
215
+ ['a.city.sapporo.jp', false],
216
+ ],
217
+
218
+ 'b.city.sapporo.jp' => [
219
+ ['jp', false],
220
+ ['sapporo.jp', false],
221
+ ['city.sapporo.jp', true],
222
+ ['b.city.sapporo.jp', true],
223
+ ['a.b.city.sapporo.jp', false],
224
+ ],
225
+ }.each_pair { |host, pairs|
193
226
  dn = DomainName(host)
194
- assert_equal(expected, dn.cookie_domain?(domain))
195
- assert_equal(expected, dn.cookie_domain?(DomainName(domain)))
196
- assert_equal(false, dn.ipaddr?)
227
+ assert_equal(true, dn.cookie_domain?(host.upcase, true), dn.to_s)
228
+ assert_equal(true, dn.cookie_domain?(host.downcase, true), dn.to_s)
229
+ assert_equal(false, dn.cookie_domain?("www." << host, true), dn.to_s)
230
+ pairs.each { |domain, expected|
231
+ assert_equal(expected, dn.cookie_domain?(domain), "%s - %s" % [dn.to_s, domain])
232
+ assert_equal(expected, dn.cookie_domain?(DomainName(domain)), "%s - %s" % [dn.to_s, domain])
233
+ }
197
234
  }
198
235
  end
199
236
 
@@ -204,7 +241,9 @@ class TestDomainName < Test::Unit::TestCase
204
241
  assert_equal(true, dn.ipaddr?)
205
242
  assert_equal(IPAddr.new(a), dn.ipaddr)
206
243
  assert_equal(true, dn.cookie_domain?(a))
244
+ assert_equal(true, dn.cookie_domain?(a, true))
207
245
  assert_equal(true, dn.cookie_domain?(dn))
246
+ assert_equal(true, dn.cookie_domain?(dn, true))
208
247
  assert_equal(false, dn.cookie_domain?('168.10.20'))
209
248
  assert_equal(false, dn.cookie_domain?('20'))
210
249
  end
@@ -219,8 +258,11 @@ class TestDomainName < Test::Unit::TestCase
219
258
  assert_equal(true, dn.ipaddr?)
220
259
  assert_equal(IPAddr.new(a), dn.ipaddr)
221
260
  assert_equal(true, dn.cookie_domain?(host))
261
+ assert_equal(true, dn.cookie_domain?(host, true))
222
262
  assert_equal(true, dn.cookie_domain?(dn))
263
+ assert_equal(true, dn.cookie_domain?(dn, true))
223
264
  assert_equal(true, dn.cookie_domain?(a))
265
+ assert_equal(true, dn.cookie_domain?(a, true))
224
266
  }
225
267
  end
226
268
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: domain_name
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.5.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-18 00:00:00.000000000 Z
12
+ date: 2012-12-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: unf
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &70293817315960 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,15 +21,10 @@ dependencies:
21
21
  version: 0.0.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 0.0.3
24
+ version_requirements: *70293817315960
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: shoulda
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &70293817314640 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ! '>='
@@ -37,15 +32,10 @@ dependencies:
37
32
  version: '0'
38
33
  type: :development
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
35
+ version_requirements: *70293817314640
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: bundler
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &70293817313160 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ~>
@@ -53,15 +43,10 @@ dependencies:
53
43
  version: 1.2.0
54
44
  type: :development
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 1.2.0
46
+ version_requirements: *70293817313160
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: rdoc
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &70293817312260 !ruby/object:Gem::Requirement
65
50
  none: false
66
51
  requirements:
67
52
  - - ! '>='
@@ -69,12 +54,7 @@ dependencies:
69
54
  version: 2.4.2
70
55
  type: :development
71
56
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: 2.4.2
57
+ version_requirements: *70293817312260
78
58
  description: ! 'This is a Domain Name manipulation library for Ruby.
79
59
 
80
60
 
@@ -129,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
109
  version: '0'
130
110
  requirements: []
131
111
  rubyforge_project:
132
- rubygems_version: 1.8.24
112
+ rubygems_version: 1.8.15
133
113
  signing_key:
134
114
  specification_version: 3
135
115
  summary: Domain Name manipulation library for Ruby