diff --git a/lib/faraday/cookie_jar.rb b/lib/faraday/cookie_jar.rb index 6b6f0cc..428f79f 100644 --- a/lib/faraday/cookie_jar.rb +++ b/lib/faraday/cookie_jar.rb @@ -11,7 +11,12 @@ def initialize(app, options = {}) def call(env) cookies = @jar.cookies(env[:url]) unless cookies.empty? - env[:request_headers]["Cookie"] = HTTP::Cookie.cookie_value(cookies) + cookie_value = HTTP::Cookie.cookie_value(cookies) + if env[:request_headers]["Cookie"] + env[:request_headers]["Cookie"] = cookie_value + ';' + env[:request_headers]["Cookie"] + else + env[:request_headers]["Cookie"] = cookie_value + end end @app.call(env).on_complete do |res| @@ -27,4 +32,4 @@ def call(env) if Faraday.respond_to? :register_middleware Faraday.register_middleware :cookie_jar => lambda { Faraday::CookieJar } -end +end \ No newline at end of file diff --git a/spec/faraday-cookie_jar/cookie_jar_spec.rb b/spec/faraday-cookie_jar/cookie_jar_spec.rb index 1330f87..b5d2ce0 100644 --- a/spec/faraday-cookie_jar/cookie_jar_spec.rb +++ b/spec/faraday-cookie_jar/cookie_jar_spec.rb @@ -24,5 +24,16 @@ sleep 2 conn.get('/dump').body.should_not == 'foo=bar' end + + it 'multiple cookies' do + conn.get('/default') + + response = conn.send('get') do |request| + request.url '/multiple_cookies' + request.headers.merge!({:Cookie => 'language=english'}) + end + + response.body.should == 'foo=bar;language=english' + end end diff --git a/spec/support/fake_app.rb b/spec/support/fake_app.rb index 3704065..638a6d6 100644 --- a/spec/support/fake_app.rb +++ b/spec/support/fake_app.rb @@ -16,4 +16,8 @@ class FakeApp < Sinatra::Application get '/expires' do response.set_cookie "foo", :value => "bar", :expires => Time.now + 1 end + + get '/multiple_cookies' do + "foo=#{request.cookies['foo']};language=#{request.cookies['language']}" + end end