mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-08-10 00:01:27 -04:00
improved cookies testing, to test also the array-of-cookie-hashes case; does not accept a string anymore, as besides untested, it wasn't working properly
This commit is contained in:
parent
1b068aca21
commit
959429b386
@ -20,18 +20,6 @@ module HTTPX
|
||||
require "httpx/plugins/cookies/set_cookie_parser"
|
||||
end
|
||||
|
||||
def self.extra_options(options)
|
||||
Class.new(options.class) do
|
||||
def_option(:cookies) do |cookies|
|
||||
if cookies.is_a?(Store)
|
||||
cookies
|
||||
else
|
||||
Store.new(cookies)
|
||||
end
|
||||
end
|
||||
end.new(options)
|
||||
end
|
||||
|
||||
class Store
|
||||
def self.new(cookies = nil)
|
||||
return cookies if cookies.is_a?(self)
|
||||
@ -41,14 +29,14 @@ module HTTPX
|
||||
|
||||
def initialize(cookies = nil)
|
||||
@store = Hash.new { |hash, origin| hash[origin] = HTTP::CookieJar.new }
|
||||
|
||||
return unless cookies
|
||||
|
||||
cookies = cookies.split(/ *; */) if cookies.is_a?(String)
|
||||
@default_cookies = cookies.map do |cookie, v|
|
||||
if cookie.is_a?(HTTP::Cookie)
|
||||
cookie
|
||||
@default_cookies = cookies.enum_for(:each).map do |*args|
|
||||
if args.size == 1 && args.first.is_a?(HTTP::Cookie)
|
||||
args.first
|
||||
else
|
||||
HTTP::Cookie.new(cookie.to_s, v.to_s)
|
||||
HTTP::Cookie.new(*args)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -79,6 +67,18 @@ module HTTPX
|
||||
require "http/cookie"
|
||||
end
|
||||
|
||||
def self.extra_options(options)
|
||||
Class.new(options.class) do
|
||||
def_option(:cookies) do |cookies|
|
||||
if cookies.is_a?(Store)
|
||||
cookies
|
||||
else
|
||||
Store.new(cookies)
|
||||
end
|
||||
end
|
||||
end.new(options)
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
extend Forwardable
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
module HTTPX
|
||||
module Plugins
|
||||
module Cookies
|
||||
type store_value = String | Array[HTTP::Cookie] | Hash[_ToS, _ToS]
|
||||
type store_value = Array[HTTP::Cookie] | _Each[_ToS, _ToS] | _Each[Hash[_ToS, _ToS]]
|
||||
type cookies_value = Store | store_value
|
||||
|
||||
interface _CookieOptions
|
||||
|
@ -16,6 +16,14 @@ module Requests
|
||||
assert body["cookies"]["abc"] == "def", "abc wasn't properly set"
|
||||
end
|
||||
|
||||
def test_plugin_cookies_get_with_hash
|
||||
session = HTTPX.plugin(:cookies)
|
||||
session_response = session.with_cookies([{ "name" => "abc", "value" => "def" }]).get(cookies_uri)
|
||||
body = json_body(session_response)
|
||||
assert body.key?("cookies")
|
||||
assert body["cookies"]["abc"] == "def", "abc wasn't properly set"
|
||||
end
|
||||
|
||||
def test_plugin_cookies_set
|
||||
session = HTTPX.plugin(:cookies)
|
||||
session_cookies = { "a" => "b", "c" => "d" }
|
||||
|
Loading…
x
Reference in New Issue
Block a user