http-cookie 1.0.0.pre7 → 1.0.0.pre8
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/README.md +2 -2
- data/lib/http/cookie.rb +13 -13
- data/lib/http/cookie/scanner.rb +1 -1
- data/lib/http/cookie/version.rb +1 -1
- data/lib/http/cookie_jar.rb +23 -0
- data/test/test_http_cookie.rb +58 -53
- data/test/test_http_cookie_jar.rb +489 -491
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ab53e3207db1e30dadbe6f623adece56c2dd9a7
|
4
|
+
data.tar.gz: cc1b6d68f82a1847275e3d16ab122e86d399186d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 308162bbb92376e5140b863141c55501c454fdf676617f018faa4d1098819a4fe9c9ef4b0b2f63423cee7bb862b8a79edde7d914ce940b095544251f49b9018c
|
7
|
+
data.tar.gz: ba8f6855bc6255f2d5729407a299fabba71ae0c1488eefc084cd823a424fbc93c6a34c80ccfb36e1b1830a18fcc1d31b4108f4e89d136dd84a443ca967162498
|
data/README.md
CHANGED
@@ -74,8 +74,8 @@ equivalent using `HTTP::Cookie`:
|
|
74
74
|
cookies2 = Mechanize::Cookie.parse(uri, set_cookie2, log)
|
75
75
|
|
76
76
|
# after
|
77
|
-
cookies1 = HTTP::Cookie.parse(set_cookie1,
|
78
|
-
cookies2 = HTTP::Cookie.parse(set_cookie2,
|
77
|
+
cookies1 = HTTP::Cookie.parse(set_cookie1, uri_or_url)
|
78
|
+
cookies2 = HTTP::Cookie.parse(set_cookie2, uri_or_url, :logger => log)
|
79
79
|
|
80
80
|
- `Mechanize::Cookie#set_domain`
|
81
81
|
|
data/lib/http/cookie.rb
CHANGED
@@ -232,18 +232,15 @@ class HTTP::Cookie
|
|
232
232
|
end
|
233
233
|
|
234
234
|
# Parses a Set-Cookie header value `set_cookie` into an array of
|
235
|
-
# Cookie objects
|
236
|
-
#
|
237
|
-
#
|
238
|
-
# resulted array.
|
235
|
+
# Cookie objects taking `origin` as the source URI/URL. Parts
|
236
|
+
# (separated by commas) that are malformed or invalid are silently
|
237
|
+
# ignored. For example, cookies that a given origin is not
|
238
|
+
# allowed to issue are excluded from the resulted array.
|
239
239
|
#
|
240
240
|
# If a block is given, each cookie object is passed to the block.
|
241
241
|
#
|
242
242
|
# Available option keywords are below:
|
243
243
|
#
|
244
|
-
# :origin
|
245
|
-
# : The cookie's origin URI/URL
|
246
|
-
#
|
247
244
|
# :created_at
|
248
245
|
# : The creation time of the cookies parsed.
|
249
246
|
#
|
@@ -252,12 +249,14 @@ class HTTP::Cookie
|
|
252
249
|
#
|
253
250
|
# ### Compatibility Note for Mechanize::Cookie users
|
254
251
|
#
|
255
|
-
# * Order of parameters
|
252
|
+
# * Order of parameters changed in
|
256
253
|
# `HTTP::Cookie.parse`. Compare these:
|
257
254
|
#
|
258
255
|
# Mechanize::Cookie.parse(uri, set_cookie[, log])
|
259
256
|
#
|
260
|
-
# HTTP::Cookie.parse(set_cookie,
|
257
|
+
# HTTP::Cookie.parse(set_cookie, uri[, :logger => # log])
|
258
|
+
#
|
259
|
+
# * `HTTP::Cookie.parse` does not accept nil for `set_cookie`.
|
261
260
|
#
|
262
261
|
# * `HTTP::Cookie.parse` does not yield nil nor include nil in an
|
263
262
|
# returned array. It simply ignores unparsable parts.
|
@@ -267,12 +266,12 @@ class HTTP::Cookie
|
|
267
266
|
# implementations. In particular, it is capable of parsing
|
268
267
|
# cookie definitions containing double-quotes just as
|
269
268
|
# naturally expected.
|
270
|
-
def parse(set_cookie, options = nil, &block)
|
269
|
+
def parse(set_cookie, origin, options = nil, &block)
|
271
270
|
if options
|
272
271
|
logger = options[:logger]
|
273
|
-
origin = options[:origin] and origin = URI(origin)
|
274
272
|
created_at = options[:created_at]
|
275
273
|
end
|
274
|
+
origin = URI(origin)
|
276
275
|
|
277
276
|
[].tap { |cookies|
|
278
277
|
s = Scanner.new(set_cookie, logger)
|
@@ -416,6 +415,7 @@ class HTTP::Cookie
|
|
416
415
|
|
417
416
|
# See #origin.
|
418
417
|
def origin=(origin)
|
418
|
+
return origin if origin == @origin
|
419
419
|
@origin.nil? or
|
420
420
|
raise ArgumentError, "origin cannot be changed once it is set"
|
421
421
|
origin = URI(origin)
|
@@ -545,7 +545,7 @@ class HTTP::Cookie
|
|
545
545
|
# Returns a string for use in a Cookie header value,
|
546
546
|
# i.e. "name=value".
|
547
547
|
def cookie_value
|
548
|
-
"#{@name}=#{@value}"
|
548
|
+
"#{@name}=#{Scanner.quote(@value)}"
|
549
549
|
end
|
550
550
|
alias to_s cookie_value
|
551
551
|
|
@@ -559,7 +559,7 @@ class HTTP::Cookie
|
|
559
559
|
origin = origin ? URI(origin) : @origin or
|
560
560
|
raise "origin must be specified to produce a value for Set-Cookie"
|
561
561
|
|
562
|
-
string =
|
562
|
+
string = cookie_value
|
563
563
|
if @for_domain
|
564
564
|
string << "; Domain=#{@domain}"
|
565
565
|
end
|
data/lib/http/cookie/scanner.rb
CHANGED
data/lib/http/cookie/version.rb
CHANGED
data/lib/http/cookie_jar.rb
CHANGED
@@ -117,6 +117,29 @@ class HTTP::CookieJar
|
|
117
117
|
end
|
118
118
|
include Enumerable
|
119
119
|
|
120
|
+
# Parses a Set-Cookie field value `set_cookie` sent from a URI
|
121
|
+
# `origin` and adds the cookies parsed as valid to the jar. Returns
|
122
|
+
# an array of cookies that have been added. If a block is given, it
|
123
|
+
# is called after each cookie is added.
|
124
|
+
#
|
125
|
+
# `jar.parse(set_cookie, origin)` is a shorthand for this:
|
126
|
+
#
|
127
|
+
# HTTP::Cookie.parse(set_cookie, origin) { |cookie|
|
128
|
+
# jar.add(cookie)
|
129
|
+
# }
|
130
|
+
#
|
131
|
+
# See HTTP::Cookie.parse for available options.
|
132
|
+
def parse(set_cookie, origin, options = nil) # :yield: cookie
|
133
|
+
if block_given?
|
134
|
+
HTTP::Cookie.parse(set_cookie, origin, options) { |cookie|
|
135
|
+
add(cookie)
|
136
|
+
yield cookie
|
137
|
+
}
|
138
|
+
else
|
139
|
+
HTTP::Cookie.parse(set_cookie, origin, options, &method(:add))
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
120
143
|
# call-seq:
|
121
144
|
# jar.save(filename_or_io, **options)
|
122
145
|
# jar.save(filename_or_io, format = :yaml, **options)
|
data/test/test_http_cookie.rb
CHANGED
@@ -48,7 +48,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
48
48
|
dates.each do |date|
|
49
49
|
cookie = "PREF=1; expires=#{date}"
|
50
50
|
silently do
|
51
|
-
assert_equal 1, HTTP::Cookie.parse(cookie,
|
51
|
+
assert_equal 1, HTTP::Cookie.parse(cookie, url) { |c|
|
52
52
|
assert c.expires, "Tried parsing: #{date}"
|
53
53
|
assert_equal(true, c.expires < yesterday)
|
54
54
|
}.size
|
@@ -61,7 +61,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
61
61
|
|
62
62
|
uri = URI.parse 'http://example'
|
63
63
|
|
64
|
-
assert_equal 1, HTTP::Cookie.parse(cookie_str,
|
64
|
+
assert_equal 1, HTTP::Cookie.parse(cookie_str, uri) { |cookie|
|
65
65
|
assert_equal 'a', cookie.name
|
66
66
|
assert_equal 'b', cookie.value
|
67
67
|
}.size
|
@@ -72,7 +72,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
72
72
|
|
73
73
|
uri = URI.parse 'http://example'
|
74
74
|
|
75
|
-
assert_equal 1, HTTP::Cookie.parse(cookie_str,
|
75
|
+
assert_equal 1, HTTP::Cookie.parse(cookie_str, uri) { |cookie|
|
76
76
|
assert_equal 'foo', cookie.name
|
77
77
|
assert_equal 'bar', cookie.value
|
78
78
|
assert_equal '/', cookie.path
|
@@ -86,11 +86,11 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
86
86
|
cookie_str = "foo=#{'Cookie' * 680}; path=/ab/"
|
87
87
|
assert_equal(HTTP::Cookie::MAX_LENGTH - 1, cookie_str.bytesize)
|
88
88
|
|
89
|
-
assert_equal 1, HTTP::Cookie.parse(cookie_str,
|
89
|
+
assert_equal 1, HTTP::Cookie.parse(cookie_str, uri).size
|
90
90
|
|
91
|
-
assert_equal 1, HTTP::Cookie.parse(cookie_str.sub(';', 'x;'),
|
91
|
+
assert_equal 1, HTTP::Cookie.parse(cookie_str.sub(';', 'x;'), uri).size
|
92
92
|
|
93
|
-
assert_equal 0, HTTP::Cookie.parse(cookie_str.sub(';', 'xx;'),
|
93
|
+
assert_equal 0, HTTP::Cookie.parse(cookie_str.sub(';', 'xx;'), uri).size
|
94
94
|
end
|
95
95
|
|
96
96
|
def test_parse_quoted
|
@@ -99,7 +99,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
99
99
|
|
100
100
|
uri = URI.parse 'http://example'
|
101
101
|
|
102
|
-
assert_equal 1, HTTP::Cookie.parse(cookie_str,
|
102
|
+
assert_equal 1, HTTP::Cookie.parse(cookie_str, uri) { |cookie|
|
103
103
|
assert_equal 'quoted', cookie.name
|
104
104
|
assert_equal 'value', cookie.value
|
105
105
|
assert_equal 'comment is "comment"', cookie.comment
|
@@ -109,7 +109,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
109
109
|
def test_parse_weird_cookie
|
110
110
|
cookie = 'n/a, ASPSESSIONIDCSRRQDQR=FBLDGHPBNDJCPCGNCPAENELB; path=/'
|
111
111
|
url = URI.parse('http://www.searchinnovation.com/')
|
112
|
-
assert_equal 1, HTTP::Cookie.parse(cookie,
|
112
|
+
assert_equal 1, HTTP::Cookie.parse(cookie, url) { |c|
|
113
113
|
assert_equal('ASPSESSIONIDCSRRQDQR', c.name)
|
114
114
|
assert_equal('FBLDGHPBNDJCPCGNCPAENELB', c.value)
|
115
115
|
}.size
|
@@ -118,7 +118,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
118
118
|
def test_double_semicolon
|
119
119
|
double_semi = 'WSIDC=WEST;; domain=.williams-sonoma.com; path=/'
|
120
120
|
url = URI.parse('http://williams-sonoma.com/')
|
121
|
-
assert_equal 1, HTTP::Cookie.parse(double_semi,
|
121
|
+
assert_equal 1, HTTP::Cookie.parse(double_semi, url) { |cookie|
|
122
122
|
assert_equal('WSIDC', cookie.name)
|
123
123
|
assert_equal('WEST', cookie.value)
|
124
124
|
}.size
|
@@ -127,13 +127,13 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
127
127
|
def test_parse_bad_version
|
128
128
|
bad_cookie = 'PRETANET=TGIAqbFXtt; Name=/PRETANET; Path=/; Version=1.2; Content-type=text/html; Domain=192.168.6.196; expires=Friday, 13-November-2026 23:01:46 GMT;'
|
129
129
|
url = URI.parse('http://localhost/')
|
130
|
-
assert_equal 0, HTTP::Cookie.parse(bad_cookie,
|
130
|
+
assert_equal 0, HTTP::Cookie.parse(bad_cookie, url).size
|
131
131
|
end
|
132
132
|
|
133
133
|
def test_parse_bad_max_age
|
134
134
|
bad_cookie = 'PRETANET=TGIAqbFXtt; Name=/PRETANET; Path=/; Max-Age=1.2; Content-type=text/html; Domain=192.168.6.196; expires=Friday, 13-November-2026 23:01:46 GMT;'
|
135
135
|
url = URI.parse('http://localhost/')
|
136
|
-
assert_equal 0, HTTP::Cookie.parse(bad_cookie,
|
136
|
+
assert_equal 0, HTTP::Cookie.parse(bad_cookie, url).size
|
137
137
|
end
|
138
138
|
|
139
139
|
def test_parse_date_fail
|
@@ -146,7 +146,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
146
146
|
silently do
|
147
147
|
dates.each do |date|
|
148
148
|
cookie = "PREF=1; expires=#{date}"
|
149
|
-
assert_equal 1, HTTP::Cookie.parse(cookie,
|
149
|
+
assert_equal 1, HTTP::Cookie.parse(cookie, url) { |c|
|
150
150
|
assert_equal(true, c.expires.nil?)
|
151
151
|
}.size
|
152
152
|
end
|
@@ -158,7 +158,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
158
158
|
|
159
159
|
cookie_str = 'a=b; domain=.example.com'
|
160
160
|
|
161
|
-
cookie = HTTP::Cookie.parse(cookie_str,
|
161
|
+
cookie = HTTP::Cookie.parse(cookie_str, url).first
|
162
162
|
|
163
163
|
assert_equal 'example.com', cookie.domain
|
164
164
|
assert cookie.for_domain?
|
@@ -170,7 +170,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
170
170
|
|
171
171
|
cookie_str = 'a=b; domain=example.com'
|
172
172
|
|
173
|
-
cookie = HTTP::Cookie.parse(cookie_str,
|
173
|
+
cookie = HTTP::Cookie.parse(cookie_str, url).first
|
174
174
|
|
175
175
|
assert_equal 'example.com', cookie.domain
|
176
176
|
assert cookie.for_domain?
|
@@ -178,9 +178,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
178
178
|
end
|
179
179
|
|
180
180
|
def test_parse_public_suffix
|
181
|
-
|
182
|
-
|
183
|
-
cookie = HTTP::Cookie.parse(cookie_str).first
|
181
|
+
cookie = HTTP::Cookie.new('a', 'b', :domain => 'com')
|
184
182
|
assert_equal('com', cookie.domain)
|
185
183
|
assert_equal(false, cookie.for_domain?)
|
186
184
|
|
@@ -198,7 +196,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
198
196
|
|
199
197
|
cookie_str = 'a=b;'
|
200
198
|
|
201
|
-
cookie = HTTP::Cookie.parse(cookie_str,
|
199
|
+
cookie = HTTP::Cookie.parse(cookie_str, url).first
|
202
200
|
|
203
201
|
assert_equal 'example.com', cookie.domain
|
204
202
|
assert !cookie.for_domain?
|
@@ -211,23 +209,23 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
211
209
|
epoch, date = 4485353164, 'Fri, 19 Feb 2112 19:26:04 GMT'
|
212
210
|
base = Time.at(1363014000)
|
213
211
|
|
214
|
-
cookie = HTTP::Cookie.parse("name=Akinori; expires=#{date}",
|
212
|
+
cookie = HTTP::Cookie.parse("name=Akinori; expires=#{date}", url).first
|
215
213
|
assert_equal Time.at(epoch), cookie.expires
|
216
214
|
|
217
|
-
cookie = HTTP::Cookie.parse('name=Akinori; max-age=3600',
|
215
|
+
cookie = HTTP::Cookie.parse('name=Akinori; max-age=3600', url).first
|
218
216
|
assert_in_delta Time.now + 3600, cookie.expires, 1
|
219
|
-
cookie = HTTP::Cookie.parse('name=Akinori; max-age=3600',
|
217
|
+
cookie = HTTP::Cookie.parse('name=Akinori; max-age=3600', url, :created_at => base).first
|
220
218
|
assert_equal base + 3600, cookie.expires
|
221
219
|
|
222
220
|
# Max-Age has precedence over Expires
|
223
|
-
cookie = HTTP::Cookie.parse("name=Akinori; max-age=3600; expires=#{date}",
|
221
|
+
cookie = HTTP::Cookie.parse("name=Akinori; max-age=3600; expires=#{date}", url).first
|
224
222
|
assert_in_delta Time.now + 3600, cookie.expires, 1
|
225
|
-
cookie = HTTP::Cookie.parse("name=Akinori; max-age=3600; expires=#{date}",
|
223
|
+
cookie = HTTP::Cookie.parse("name=Akinori; max-age=3600; expires=#{date}", url, :created_at => base).first
|
226
224
|
assert_equal base + 3600, cookie.expires
|
227
225
|
|
228
|
-
cookie = HTTP::Cookie.parse("name=Akinori; expires=#{date}; max-age=3600",
|
226
|
+
cookie = HTTP::Cookie.parse("name=Akinori; expires=#{date}; max-age=3600", url).first
|
229
227
|
assert_in_delta Time.now + 3600, cookie.expires, 1
|
230
|
-
cookie = HTTP::Cookie.parse("name=Akinori; expires=#{date}; max-age=3600",
|
228
|
+
cookie = HTTP::Cookie.parse("name=Akinori; expires=#{date}; max-age=3600", url, :created_at => base).first
|
231
229
|
assert_equal base + 3600, cookie.expires
|
232
230
|
end
|
233
231
|
|
@@ -241,7 +239,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
241
239
|
'name=Akinori; expires=',
|
242
240
|
'name=Akinori; max-age=',
|
243
241
|
].each { |str|
|
244
|
-
cookie = HTTP::Cookie.parse(str,
|
242
|
+
cookie = HTTP::Cookie.parse(str, url).first
|
245
243
|
assert cookie.session?, str
|
246
244
|
}
|
247
245
|
|
@@ -249,7 +247,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
249
247
|
'name=Akinori; expires=Mon, 19 Feb 2012 19:26:04 GMT',
|
250
248
|
'name=Akinori; max-age=3600',
|
251
249
|
].each { |str|
|
252
|
-
cookie = HTTP::Cookie.parse(str,
|
250
|
+
cookie = HTTP::Cookie.parse(str, url).first
|
253
251
|
assert !cookie.session?, str
|
254
252
|
}
|
255
253
|
end
|
@@ -273,7 +271,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
273
271
|
"no_domain2=no_domain; Expires=Sun, 06 Nov 2011 00:29:53 GMT; no_expires=nope; Domain, " \
|
274
272
|
"no_domain3=no_domain; Expires=Sun, 06 Nov 2011 00:29:53 GMT; no_expires=nope; Domain="
|
275
273
|
|
276
|
-
cookies = HTTP::Cookie.parse cookie_str,
|
274
|
+
cookies = HTTP::Cookie.parse cookie_str, url
|
277
275
|
assert_equal 15, cookies.length
|
278
276
|
|
279
277
|
name = cookies.find { |c| c.name == 'name' }
|
@@ -323,7 +321,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
323
321
|
|
324
322
|
cookie_params.keys.combine.each do |keys|
|
325
323
|
cookie_text = [cookie_value, *keys.map { |key| cookie_params[key] }].join('; ')
|
326
|
-
cookie, = HTTP::Cookie.parse(cookie_text,
|
324
|
+
cookie, = HTTP::Cookie.parse(cookie_text, url)
|
327
325
|
|
328
326
|
assert_equal('12345%7D=ASDFWEE345%3DASda', cookie.to_s)
|
329
327
|
assert_equal('/', cookie.path)
|
@@ -340,7 +338,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
340
338
|
|
341
339
|
cookie_params.keys.combine.each do |keys|
|
342
340
|
cookie_text = [cookie_value, *keys.map { |key| cookie_params[key] }].join('; ')
|
343
|
-
cookie, = HTTP::Cookie.parse(cookie_text,
|
341
|
+
cookie, = HTTP::Cookie.parse(cookie_text, url)
|
344
342
|
|
345
343
|
assert_equal('12345%7D=', cookie.to_s)
|
346
344
|
assert_equal('', cookie.value)
|
@@ -360,7 +358,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
360
358
|
cookie_params.keys.combine.each do |keys|
|
361
359
|
next if keys.include?('path')
|
362
360
|
cookie_text = [cookie_value, *keys.map { |key| cookie_params[key] }].join('; ')
|
363
|
-
cookie, = HTTP::Cookie.parse(cookie_text,
|
361
|
+
cookie, = HTTP::Cookie.parse(cookie_text, url)
|
364
362
|
|
365
363
|
assert_equal('12345%7D=ASDFWEE345%3DASda', cookie.to_s)
|
366
364
|
assert_equal('/', cookie.path)
|
@@ -379,7 +377,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
379
377
|
cookie_params.keys.combine.each do |keys|
|
380
378
|
next unless keys.include?('secure')
|
381
379
|
cookie_text = [cookie_value, *keys.map { |key| cookie_params[key] }].join('; ')
|
382
|
-
cookie, = HTTP::Cookie.parse(cookie_text,
|
380
|
+
cookie, = HTTP::Cookie.parse(cookie_text, url)
|
383
381
|
|
384
382
|
assert_equal('12345%7D=ASDFWEE345%3DASda', cookie.to_s)
|
385
383
|
assert_equal('/', cookie.path)
|
@@ -390,6 +388,16 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
390
388
|
end
|
391
389
|
end
|
392
390
|
|
391
|
+
def test_cookie_value
|
392
|
+
[
|
393
|
+
['foo="bar baz"', 'bar baz'],
|
394
|
+
['foo="bar\"; \"baz"', 'bar"; "baz'],
|
395
|
+
].each { |cookie_value, value|
|
396
|
+
cookie = HTTP::Cookie.new('foo', value)
|
397
|
+
assert_equal(cookie_value, cookie.cookie_value)
|
398
|
+
}
|
399
|
+
end
|
400
|
+
|
393
401
|
def test_set_cookie_value
|
394
402
|
url = URI.parse('http://rubyforge.org/')
|
395
403
|
|
@@ -398,8 +406,8 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
398
406
|
date = Time.at(Time.now.to_i)
|
399
407
|
cookie_params.keys.combine.each do |keys|
|
400
408
|
cookie_text = [cookie_value, *keys.map { |key| cookie_params[key] }].join('; ')
|
401
|
-
cookie, = HTTP::Cookie.parse(cookie_text,
|
402
|
-
cookie2, = HTTP::Cookie.parse(cookie.set_cookie_value,
|
409
|
+
cookie, = HTTP::Cookie.parse(cookie_text, url, :created_at => date)
|
410
|
+
cookie2, = HTTP::Cookie.parse(cookie.set_cookie_value, url, :created_at => date)
|
403
411
|
|
404
412
|
assert_equal(cookie.name, cookie2.name)
|
405
413
|
assert_equal(cookie.value, cookie2.value)
|
@@ -427,7 +435,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
427
435
|
|
428
436
|
cookie_params.keys.combine.each do |keys|
|
429
437
|
cookie_text = [cookie_value, *keys.map { |key| cookie_params[key] }].join(';')
|
430
|
-
cookie, = HTTP::Cookie.parse(cookie_text,
|
438
|
+
cookie, = HTTP::Cookie.parse(cookie_text, url)
|
431
439
|
|
432
440
|
assert_equal('12345%7D=ASDFWEE345%3DASda', cookie.to_s)
|
433
441
|
assert_equal('/', cookie.path)
|
@@ -615,11 +623,11 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
615
623
|
assert_equal '/foo/bar', uri.path
|
616
624
|
|
617
625
|
cookie_str = 'a=b'
|
618
|
-
cookie = HTTP::Cookie.parse(cookie_str,
|
626
|
+
cookie = HTTP::Cookie.parse(cookie_str, uri).first
|
619
627
|
assert '/foo/', cookie.path
|
620
628
|
|
621
629
|
cookie_str = 'a=b; path=/foo'
|
622
|
-
cookie = HTTP::Cookie.parse(cookie_str,
|
630
|
+
cookie = HTTP::Cookie.parse(cookie_str, uri).first
|
623
631
|
assert '/foo', cookie.path
|
624
632
|
|
625
633
|
uri = URI.parse('http://example.com')
|
@@ -627,16 +635,16 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
627
635
|
assert_equal '', uri.path
|
628
636
|
|
629
637
|
cookie_str = 'a=b'
|
630
|
-
cookie = HTTP::Cookie.parse(cookie_str,
|
638
|
+
cookie = HTTP::Cookie.parse(cookie_str, uri).first
|
631
639
|
assert '/', cookie.path
|
632
640
|
|
633
641
|
cookie_str = 'a=b; path=/foo'
|
634
|
-
cookie = HTTP::Cookie.parse(cookie_str,
|
642
|
+
cookie = HTTP::Cookie.parse(cookie_str, uri).first
|
635
643
|
assert '/foo', cookie.path
|
636
644
|
end
|
637
645
|
|
638
646
|
def test_domain_nil
|
639
|
-
cookie = HTTP::Cookie.
|
647
|
+
cookie = HTTP::Cookie.new('a', 'b')
|
640
648
|
assert_raises(RuntimeError) {
|
641
649
|
cookie.valid_for_uri?('http://example.com/')
|
642
650
|
}
|
@@ -646,7 +654,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
646
654
|
url = URI.parse('http://host.dom.example.com:8080/')
|
647
655
|
|
648
656
|
cookie_str = 'a=b; domain=Example.Com'
|
649
|
-
cookie = HTTP::Cookie.parse(cookie_str,
|
657
|
+
cookie = HTTP::Cookie.parse(cookie_str, url).first
|
650
658
|
assert 'example.com', cookie.domain
|
651
659
|
|
652
660
|
cookie.domain = DomainName(url.host)
|
@@ -666,8 +674,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
666
674
|
def test_origin=
|
667
675
|
url = URI.parse('http://example.com/path/')
|
668
676
|
|
669
|
-
|
670
|
-
cookie = HTTP::Cookie.parse(cookie_str).first
|
677
|
+
cookie = HTTP::Cookie.new('a', 'b')
|
671
678
|
cookie.origin = url
|
672
679
|
assert_equal '/path/', cookie.path
|
673
680
|
assert_equal 'example.com', cookie.domain
|
@@ -676,8 +683,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
676
683
|
cookie.origin = URI.parse('http://www.example.com/')
|
677
684
|
}
|
678
685
|
|
679
|
-
|
680
|
-
cookie = HTTP::Cookie.parse(cookie_str).first
|
686
|
+
cookie = HTTP::Cookie.new('a', 'b', :domain => '.example.com', :path => '/')
|
681
687
|
cookie.origin = url
|
682
688
|
assert_equal '/', cookie.path
|
683
689
|
assert_equal 'example.com', cookie.domain
|
@@ -686,8 +692,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
686
692
|
cookie.origin = URI.parse('http://www.example.com/')
|
687
693
|
}
|
688
694
|
|
689
|
-
|
690
|
-
cookie = HTTP::Cookie.parse(cookie_str).first
|
695
|
+
cookie = HTTP::Cookie.new('a', 'b', :domain => '.example.com')
|
691
696
|
assert_raises(ArgumentError) {
|
692
697
|
cookie.origin = URI.parse('http://example.org/')
|
693
698
|
}
|
@@ -706,7 +711,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
706
711
|
def test_valid_for_uri?
|
707
712
|
{
|
708
713
|
HTTP::Cookie.parse('a1=b',
|
709
|
-
|
714
|
+
'http://example.com/dir/file.html').first => {
|
710
715
|
true => [
|
711
716
|
'http://example.com/dir/',
|
712
717
|
'http://example.com/dir/test.html',
|
@@ -726,7 +731,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
726
731
|
]
|
727
732
|
},
|
728
733
|
HTTP::Cookie.parse('a2=b; path=/dir2/',
|
729
|
-
|
734
|
+
'http://example.com/dir/file.html').first => {
|
730
735
|
true => [
|
731
736
|
'http://example.com/dir2/',
|
732
737
|
'http://example.com/dir2/test.html',
|
@@ -746,7 +751,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
746
751
|
]
|
747
752
|
},
|
748
753
|
HTTP::Cookie.parse('a4=b; domain=example.com; path=/dir2/',
|
749
|
-
|
754
|
+
URI('http://example.com/dir/file.html')).first => {
|
750
755
|
true => [
|
751
756
|
'https://example.com/dir2/test.html',
|
752
757
|
'http://example.com/dir2/test.html',
|
@@ -762,7 +767,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
762
767
|
]
|
763
768
|
},
|
764
769
|
HTTP::Cookie.parse('a4=b; secure',
|
765
|
-
|
770
|
+
URI('https://example.com/dir/file.html')).first => {
|
766
771
|
true => [
|
767
772
|
'https://example.com/dir/test.html',
|
768
773
|
],
|
@@ -774,7 +779,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
774
779
|
]
|
775
780
|
},
|
776
781
|
HTTP::Cookie.parse('a5=b',
|
777
|
-
|
782
|
+
URI('https://example.com/')).first => {
|
778
783
|
true => [
|
779
784
|
'https://example.com',
|
780
785
|
],
|
@@ -783,7 +788,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
783
788
|
]
|
784
789
|
},
|
785
790
|
HTTP::Cookie.parse('a6=b; path=/dir',
|
786
|
-
|
791
|
+
'http://example.com/dir/file.html').first => {
|
787
792
|
true => [
|
788
793
|
'http://example.com/dir',
|
789
794
|
'http://example.com/dir/',
|