aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/zero/response.rb4
-rw-r--r--spec/unit/response/response_spec.rb11
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/zero/response.rb b/lib/zero/response.rb
index ab4c70b..13a053e 100644
--- a/lib/zero/response.rb
+++ b/lib/zero/response.rb
@@ -31,8 +31,8 @@ module Zero
# @return [Array]
#
def to_a
- # TODO Remove content length and body, on certain status codes
- if status == 204
+ # Remove content length and body, on status 204 and 304
+ if status == 204 or status == 304
header.delete('Content-Length')
header.delete('Content-Type')
self.body = []
diff --git a/spec/unit/response/response_spec.rb b/spec/unit/response/response_spec.rb
index 7a02ced..4b94dbe 100644
--- a/spec/unit/response/response_spec.rb
+++ b/spec/unit/response/response_spec.rb
@@ -56,6 +56,17 @@ describe Zero::Response do
value[1].should eq({}) # Headers
end
+
+ it "removes Content-Type, Content-Length and body on status code 304" do
+ subject.body.push '"foobar"'
+ subject.content_type 'application/json'
+ subject.header['Content-Length'] = 8
+
+ subject.status = 304
+ value = subject.to_a
+
+ value[1].should eq({}) # Headers
+ end
end
describe '#status' do