diff --git a/lib/algolia/http/http_requester.rb b/lib/algolia/http/http_requester.rb index cc7a625f..d1f687d0 100644 --- a/lib/algolia/http/http_requester.rb +++ b/lib/algolia/http/http_requester.rb @@ -65,7 +65,7 @@ def send_request(host, method, path, body, headers, timeout, connect_timeout) # @return [Faraday::Connection] # def connection(host) - @connections[host.accept] ||= Faraday.new(build_url(host)) do |f| + @connections[host.url] ||= Faraday.new(build_url(host)) do |f| f.adapter @adapter.to_sym end end diff --git a/test/algolia/unit/http_requester_test.rb b/test/algolia/unit/http_requester_test.rb new file mode 100644 index 00000000..f1be69b8 --- /dev/null +++ b/test/algolia/unit/http_requester_test.rb @@ -0,0 +1,27 @@ +require 'algolia' +require 'test_helper' + +class HttpRequesterTest + describe 'connection' do + def test_caches_http_client_connections + requester = Algolia::Http::HttpRequester.new(Defaults::ADAPTER, nil) + host1 = Algolia::Transport::StatefulHost.new('host1') + + # rubocop:disable Lint/UselessComparison + assert requester.connection(host1) == requester.connection(host1) + # rubocop:enable Lint/UselessComparison + assert_equal requester.connection(host1).url_prefix.host, 'host1' + end + + def test_caches_hosts_independent_of_each_other + requester = Algolia::Http::HttpRequester.new(Defaults::ADAPTER, nil) + host1 = Algolia::Transport::StatefulHost.new('host1') + host2 = Algolia::Transport::StatefulHost.new('host2') + + assert requester.connection(host1) != requester.connection(host2) + + assert_equal requester.connection(host1).url_prefix.host, 'host1' + assert_equal requester.connection(host2).url_prefix.host, 'host2' + end + end +end