summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/zero/response.rb4
-rw-r--r--spec/unit/response/response_spec.rb11
2 files changed, 11 insertions, 4 deletions
diff --git a/lib/zero/response.rb b/lib/zero/response.rb
index 2660924..eec4559 100644
--- a/lib/zero/response.rb
+++ b/lib/zero/response.rb
@@ -32,8 +32,8 @@ module Zero
#
def to_a()
# TODO Remove content length and body, on certain status codes
- # TODO Set content length, if not already set
- content_length
+ # Set content length, if not already set
+ content_length unless header.has_key? 'Content-Length'
# TODO Set content type, if not already set
[status, header, body]
diff --git a/spec/unit/response/response_spec.rb b/spec/unit/response/response_spec.rb
index 9f6a3a0..b6428fc 100644
--- a/spec/unit/response/response_spec.rb
+++ b/spec/unit/response/response_spec.rb
@@ -19,12 +19,19 @@ describe Zero::Response do
end
it "returns the content length in the header" do
- subject.body = ['foobar']
-
+ subject.body = ['foobar']
value = subject.to_a
value[1].should eq({'Content-Length' => 6}) # Headers
end
+
+ it "does not fix the Content-Length, if it's already set" do
+ subject.body = ['foobar']
+ subject.header = {'Content-Length' => 3}
+ value = subject.to_a
+
+ value[1].should eq({'Content-Length' => 3}) # Headers
+ end
end
describe '#status' do