Skip to content

Commit

Permalink
Merge pull request bblimke#190 from bblimke/nil_response_body
Browse files Browse the repository at this point in the history
Fix Net::HTTP adapter so that it returns `nil` for an empty body response.
  • Loading branch information
bblimke committed Jul 23, 2012
2 parents ff12dc2 + f7b3230 commit e015405
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
5 changes: 4 additions & 1 deletion lib/webmock/http_lib_adapters/net_http.rb
Expand Up @@ -128,7 +128,10 @@ def start_with_conditional_connect(&block)

def build_net_http_response(webmock_response, &block)
response = Net::HTTPResponse.send(:response_class, webmock_response.status[0].to_s).new("1.0", webmock_response.status[0].to_s, webmock_response.status[1])
response.instance_variable_set(:@body, webmock_response.body)
body = webmock_response.body
body = nil if body.to_s == ''

response.instance_variable_set(:@body, body)
webmock_response.headers.to_a.each do |name, values|
values = [values] unless values.is_a?(Array)
values.each do |value|
Expand Down
13 changes: 13 additions & 0 deletions spec/acceptance/shared/complex_cross_concern_behaviors.rb
Expand Up @@ -17,5 +17,18 @@
played_back_response.headers.keys.should include('Set-Cookie')
played_back_response.should == real_response
end

let(:no_content_url) { 'http://httpstat.us/204' }
[nil, ''].each do |stub_val|
it "returns the same value (nil or "") for a request stubbed as #{stub_val.inspect} that a real empty response has" do
WebMock.allow_net_connect!

real_response = http_request(:get, no_content_url)
stub_request(:get, no_content_url).to_return(:status => 204, :body => stub_val)
stubbed_response = http_request(:get, no_content_url)

stubbed_response.body.should eq(real_response.body)
end
end
end

0 comments on commit e015405

Please sign in to comment.