Permalink
Browse files

Merge pull request #190 from bblimke/nil_response_body

Fix Net::HTTP adapter so that it returns `nil` for an empty body response.
  • Loading branch information...
2 parents ff12dc2 + f7b3230 commit e015405e25a9f8dd9d104616698c44d65fb06dd8 @bblimke committed Jul 23, 2012
@@ -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|
@@ -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.