Don't overwrite existing data when If-None-Match is "*" (refs #26)

This commit is contained in:
Garret Alfert 2013-10-26 04:37:33 +02:00
parent 67435157ed
commit f61eef717e
2 changed files with 23 additions and 0 deletions

View File

@ -95,6 +95,8 @@ module RemoteStorage
object_exists = !object.raw_data.nil?
existing_object_size = object_size(object)
server.halt 412 if object_exists && server.env["HTTP_IF_NONE_MATCH"] == "*"
timestamp = (Time.now.to_f * 1000).to_i
object.meta["timestamp"] = timestamp

View File

@ -262,6 +262,27 @@ describe "App with Riak backend" do
last_response.body.must_equal "lorem ipsum"
end
end
describe "when If-None-Match header is set" do
before do
header "If-None-Match", "*"
end
it "fails when the document already exists" do
put "/jimmy/documents/archive/foo", "some awesome content"
last_response.status.must_equal 412
get "/jimmy/documents/archive/foo"
last_response.body.must_equal "lorem ipsum"
end
it "succeeds when the document does not exist" do
put "/jimmy/documents/archive/bar", "my little content"
last_response.status.must_equal 200
end
end
end
describe "exsting content without serializer registered for the given content-type" do