Merge branch 'fix_empty_file_response'
This commit is contained in:
commit
bbb1bc0af0
@ -68,7 +68,10 @@ module RemoteStorage
|
|||||||
when "application/json"
|
when "application/json"
|
||||||
return object.data.to_json
|
return object.data.to_json
|
||||||
else
|
else
|
||||||
return serializer_for(object.content_type) ? object.data : object.raw_data
|
data = serializer_for(object.content_type) ? object.data : object.raw_data
|
||||||
|
|
||||||
|
# Never return nil, always turn data into a string
|
||||||
|
return data.nil? ? '' : data
|
||||||
end
|
end
|
||||||
rescue ::Riak::HTTPFailedRequest
|
rescue ::Riak::HTTPFailedRequest
|
||||||
server.halt 404
|
server.halt 404
|
||||||
|
|||||||
@ -34,33 +34,35 @@ describe "App with Riak backend" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "GET public data" do
|
describe "GET public data" do
|
||||||
before do
|
describe "file with content" do
|
||||||
object = data_bucket.new("jimmy:public:foo")
|
before do
|
||||||
object.content_type = "text/plain"
|
object = data_bucket.new("jimmy:public:foo")
|
||||||
object.data = "some text data"
|
object.content_type = "text/plain"
|
||||||
object.store
|
object.data = "some text data"
|
||||||
|
object.store
|
||||||
|
|
||||||
get "/jimmy/public/foo"
|
get "/jimmy/public/foo"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns the value on all get requests" do
|
it "returns the value on all get requests" do
|
||||||
last_response.status.must_equal 200
|
last_response.status.must_equal 200
|
||||||
last_response.body.must_equal "some text data"
|
last_response.body.must_equal "some text data"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "has an ETag header set" do
|
it "has an ETag header set" do
|
||||||
last_response.status.must_equal 200
|
last_response.status.must_equal 200
|
||||||
last_response.headers["ETag"].wont_be_nil
|
last_response.headers["ETag"].wont_be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it "has a Content-Length header set" do
|
it "has a Content-Length header set" do
|
||||||
last_response.status.must_equal 200
|
last_response.status.must_equal 200
|
||||||
last_response.headers["Content-Length"].must_equal "14"
|
last_response.headers["Content-Length"].must_equal "14"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "has caching headers set" do
|
it "has caching headers set" do
|
||||||
last_response.status.must_equal 200
|
last_response.status.must_equal 200
|
||||||
last_response.headers["Expires"].must_equal "0"
|
last_response.headers["Expires"].must_equal "0"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "empty file" do
|
describe "empty file" do
|
||||||
@ -75,7 +77,12 @@ describe "App with Riak backend" do
|
|||||||
|
|
||||||
it "returns an empty body" do
|
it "returns an empty body" do
|
||||||
last_response.status.must_equal 200
|
last_response.status.must_equal 200
|
||||||
last_response.body.must_equal ""
|
# Rack::MockRequest turns the body into a string. We can't use
|
||||||
|
# `last_response.body` to check for nil, because:
|
||||||
|
# >> [nil].join
|
||||||
|
# => ""
|
||||||
|
last_response.body.must_equal ''
|
||||||
|
last_response.headers["Content-Length"].must_equal '0'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user