diff --git a/lib/faraday/connection.rb b/lib/faraday/connection.rb index ab4075f1..db348557 100644 --- a/lib/faraday/connection.rb +++ b/lib/faraday/connection.rb @@ -33,7 +33,8 @@ module Faraday @parallel_manager = options[:parallel] self.url_prefix = url if url - proxy(options[:proxy]) + + proxy(options.fetch(:proxy) { ENV['http_proxy'] }) @params.update options[:params] if options[:params] @headers.update options[:headers] if options[:headers] diff --git a/test/connection_test.rb b/test/connection_test.rb index 3d3e5ce2..474314a0 100644 --- a/test/connection_test.rb +++ b/test/connection_test.rb @@ -1,6 +1,17 @@ require File.expand_path(File.join(File.dirname(__FILE__), 'helper')) class TestConnection < Faraday::TestCase + + def with_proxy_env(proxy) + old_proxy = ENV['http_proxy'] + ENV['http_proxy'] = proxy + begin + yield + ensure + ENV['http_proxy'] = old_proxy + end + end + def test_initialize_parses_host_out_of_given_url conn = Faraday::Connection.new "http://sushi.com" assert_equal 'sushi.com', conn.host @@ -202,31 +213,46 @@ class TestConnection < Faraday::TestCase end def test_proxy_accepts_string - conn = Faraday::Connection.new - conn.proxy 'http://proxy.com' - assert_equal 'proxy.com', conn.proxy[:uri].host - assert_equal [:uri], conn.proxy.keys + with_proxy_env "http://duncan.proxy.com:80" do + conn = Faraday::Connection.new + conn.proxy 'http://proxy.com' + assert_equal 'proxy.com', conn.proxy[:uri].host + assert_equal [:uri], conn.proxy.keys + end end def test_proxy_accepts_uri - conn = Faraday::Connection.new - conn.proxy Addressable::URI.parse('http://proxy.com') - assert_equal 'proxy.com', conn.proxy[:uri].host - assert_equal [:uri], conn.proxy.keys + with_proxy_env "http://duncan.proxy.com:80" do + conn = Faraday::Connection.new + conn.proxy Addressable::URI.parse('http://proxy.com') + assert_equal 'proxy.com', conn.proxy[:uri].host + assert_equal [:uri], conn.proxy.keys + end end def test_proxy_accepts_hash_with_string_uri - conn = Faraday::Connection.new - conn.proxy :uri => 'http://proxy.com', :user => 'rick' - assert_equal 'proxy.com', conn.proxy[:uri].host - assert_equal 'rick', conn.proxy[:user] + with_proxy_env "http://duncan.proxy.com:80" do + conn = Faraday::Connection.new + conn.proxy :uri => 'http://proxy.com', :user => 'rick' + assert_equal 'proxy.com', conn.proxy[:uri].host + assert_equal 'rick', conn.proxy[:user] + end end def test_proxy_accepts_hash - conn = Faraday::Connection.new - conn.proxy :uri => Addressable::URI.parse('http://proxy.com'), :user => 'rick' - assert_equal 'proxy.com', conn.proxy[:uri].host - assert_equal 'rick', conn.proxy[:user] + with_proxy_env "http://duncan.proxy.com:80" do + conn = Faraday::Connection.new + conn.proxy :uri => Addressable::URI.parse('http://proxy.com'), :user => 'rick' + assert_equal 'proxy.com', conn.proxy[:uri].host + assert_equal 'rick', conn.proxy[:user] + end + end + + def test_proxy_accepts_http_env + with_proxy_env "http://duncan.proxy.com:80" do + conn = Faraday::Connection.new + assert_equal 'duncan.proxy.com', conn.proxy[:uri].host + end end def test_proxy_requires_uri