diff --git a/lib/excon/instrumentors/logging_instrumentor.rb b/lib/excon/instrumentors/logging_instrumentor.rb index d1c48a10..9a68080e 100644 --- a/lib/excon/instrumentors/logging_instrumentor.rb +++ b/lib/excon/instrumentors/logging_instrumentor.rb @@ -28,7 +28,7 @@ def self.instrument(name, params = {}) info << "?" if params[:query].is_a?(Hash) - info << params.to_a.map{ |key,value| "#{key}=#{value}" }.join('&') + info << params[:query].to_a.map { |key,value| "#{key}=#{value}" }.join('&') else info << params[:query] end diff --git a/tests/instrumentors/logging_instrumentor_tests.rb b/tests/instrumentors/logging_instrumentor_tests.rb index 16251829..128d4c65 100644 --- a/tests/instrumentors/logging_instrumentor_tests.rb +++ b/tests/instrumentors/logging_instrumentor_tests.rb @@ -1,4 +1,5 @@ require 'logger' +require 'tempfile' Shindo.tests('logging instrumentor') do env_init @@ -6,7 +7,7 @@ tests("connection logger").returns(true) do Excon.stub({:method => :get}, {body: 'body', status: 200}) - log_path = "/tmp/excon_#{Time.now.to_i}.txt" + log_path = Tempfile.create.path logger = Logger.new(log_path) # omit datetime to simplify test matcher logger.formatter = proc do |severity, datetime, progname, msg| @@ -19,13 +20,42 @@ logger: logger, mock: true ) + response = connection.request(method: :get, path: '/logger') - File.readlines(log_path)[1..2] == [ + + File.readlines(log_path) == [ "request: http://127.0.0.1/logger\n", "response: body\n" ] end + tests("connection logger with query as hash").returns(true) do + Excon.stub({:method => :get}, {body: 'body', status: 200}) + + log_path = Tempfile.create.path + logger = Logger.new(log_path) + # omit datetime to simplify test matcher + logger.formatter = proc do |severity, datetime, progname, msg| + "#{msg}\n" + end + + connection = Excon.new( + 'http://127.0.0.1:9292', + instrumentor: Excon::LoggingInstrumentor, + logger: logger, + mock: true + ) + response = connection.request( + method: :get, + path: '/logger', + query: {test: 'test'} + ) + File.readlines(log_path) == [ + "request: http://127.0.0.1/logger?test=test\n", + "response: body\n" + ] + end + Excon.stubs.clear env_restore end