mirror of
https://github.com/samsonjs/http-cookie.git
synced 2026-04-27 14:57:46 +00:00
Add tests for CookieJar#clone, #cleanup, expiration by #each and #empty?.
This commit is contained in:
parent
5bdb8f41ae
commit
2bb7485460
3 changed files with 67 additions and 1 deletions
|
|
@ -94,7 +94,7 @@ class HTTP::CookieJar
|
||||||
begin
|
begin
|
||||||
cookie.acceptable?
|
cookie.acceptable?
|
||||||
rescue RuntimeError => e
|
rescue RuntimeError => e
|
||||||
raise ArgumentError, e.message
|
raise ArgumentError, e.message
|
||||||
end
|
end
|
||||||
self
|
self
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -47,3 +47,9 @@ end
|
||||||
def test_file(filename)
|
def test_file(filename)
|
||||||
File.expand_path(filename, File.dirname(__FILE__))
|
File.expand_path(filename, File.dirname(__FILE__))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def sleep_until(time)
|
||||||
|
if (s = time - Time.now) > 0
|
||||||
|
sleep s
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
||||||
|
|
@ -749,6 +749,46 @@ module TestHTTPCookieJar
|
||||||
assert_equal %w[Akinori Japan], cookies.map { |c| c.value }
|
assert_equal %w[Akinori Japan], cookies.map { |c| c.value }
|
||||||
assert_equal %w[Japan Akinori], @jar.to_a.sort_by { |c| c.name }.map { |c| c.value }
|
assert_equal %w[Japan Akinori], @jar.to_a.sort_by { |c| c.name }.map { |c| c.value }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_expire_by_each_and_cleanup
|
||||||
|
uri = URI('http://www.example.org/')
|
||||||
|
|
||||||
|
ts = Time.now.to_f
|
||||||
|
if ts % 1 > 0.5
|
||||||
|
sleep 0.5
|
||||||
|
ts += 0.5
|
||||||
|
end
|
||||||
|
expires = Time.at(ts.floor)
|
||||||
|
time = expires
|
||||||
|
|
||||||
|
if mozilla_store?
|
||||||
|
# MozillaStore only has the time precision of seconds.
|
||||||
|
time = expires
|
||||||
|
expires -= 1
|
||||||
|
end
|
||||||
|
|
||||||
|
0.upto(2) { |i|
|
||||||
|
c = HTTP::Cookie.new('Foo%d' % (3 - i), 'Bar', :expires => expires + i, :origin => uri)
|
||||||
|
@jar << c
|
||||||
|
@jar2 << c
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_equal %w[Foo1 Foo2], @jar.cookies.map(&:name)
|
||||||
|
assert_equal %w[Foo1 Foo2], @jar2.cookies(uri).map(&:name)
|
||||||
|
|
||||||
|
sleep_until time + 1
|
||||||
|
|
||||||
|
assert_equal %w[Foo1], @jar.cookies.map(&:name)
|
||||||
|
assert_equal %w[Foo1], @jar2.cookies(uri).map(&:name)
|
||||||
|
|
||||||
|
sleep_until time + 2
|
||||||
|
|
||||||
|
@jar.cleanup
|
||||||
|
@jar2.cleanup
|
||||||
|
|
||||||
|
assert_send [@jar, :empty?]
|
||||||
|
assert_send [@jar2, :empty?]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class WithHashStore < Test::Unit::TestCase
|
class WithHashStore < Test::Unit::TestCase
|
||||||
|
|
@ -770,6 +810,20 @@ module TestHTTPCookieJar
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_clone
|
||||||
|
jar = @jar.clone
|
||||||
|
assert_not_send [
|
||||||
|
@jar.store,
|
||||||
|
:equal?,
|
||||||
|
jar.store
|
||||||
|
]
|
||||||
|
assert_not_send [
|
||||||
|
@jar.store.instance_variable_get(:@jar),
|
||||||
|
:equal?,
|
||||||
|
jar.store.instance_variable_get(:@jar)
|
||||||
|
]
|
||||||
|
assert_equal @jar.cookies, jar.cookies
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class WithMozillaStore < Test::Unit::TestCase
|
class WithMozillaStore < Test::Unit::TestCase
|
||||||
|
|
@ -789,6 +843,12 @@ module TestHTTPCookieJar
|
||||||
jar.delete(HTTP::Cookie.new("name", :domain => 'rubyforge.org'))
|
jar.delete(HTTP::Cookie.new("name", :domain => 'rubyforge.org'))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_clone
|
||||||
|
assert_raises(TypeError) {
|
||||||
|
@jar.clone
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
def test_close
|
def test_close
|
||||||
add_and_delete(@jar)
|
add_and_delete(@jar)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue