diff --git a/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb b/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb index 9c9b5ca72..36bf35e75 100644 --- a/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +++ b/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb @@ -102,7 +102,7 @@ def self.generate_typhoeus_response(request_signature, webmock_response) status_message: webmock_response.status[1], body: webmock_response.body, headers: webmock_response.headers, - effective_url: request_signature.uri + effective_url: standardize_stringify_uri(request_signature.uri) ) end response.mock = :webmock @@ -168,6 +168,13 @@ def self.request_hash(request_signature) end res end + + private + + def self.standardize_stringify_uri(uri) + return uri.omit(:port).to_s if [80, 443].include?(uri.port) + uri.to_s + end end end end diff --git a/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb b/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb index 7e33bcc4f..21a2d68ca 100644 --- a/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +++ b/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb @@ -32,6 +32,32 @@ end end + describe 'effective_url' do + context 'original request url is provided with custom port' do + it "returns effective_url as string with custom port" do + stub_request(:get, "http://www.example.com:8080").to_return(headers: {'X-Test' => '1'}) + response = Typhoeus.get("http://www.example.com:8080") + expect(response.effective_url).to eq 'http://www.example.com:8080/' + end + end + + context 'original request url is provided with standard port' do + it "returns effective_url as string with no port" do + stub_request(:get, "http://www.example.com:80").to_return(headers: {'X-Test' => '1'}) + response = Typhoeus.get("http://www.example.com:80") + expect(response.effective_url).to eq 'http://www.example.com/' + end + end + + context 'original request url is provided with no port' do + it "returns effective_url as string with no port" do + stub_request(:get, "http://www.example.com").to_return(headers: {'X-Test' => '1'}) + response = Typhoeus.get("http://www.example.com") + expect(response.effective_url).to eq 'http://www.example.com/' + end + end + end + describe "when params are used" do it "should take into account params for POST request" do stub_request(:post, "www.example.com/?hello=world").with(query: {hello: 'world'})