Consider that the metadata has changed when the Last-Modified changes
Also adds a spec for it
This commit is contained in:
parent
ca0127d6a6
commit
f14ef4dc21
@ -289,10 +289,9 @@ module RemoteStorage
|
|||||||
|
|
||||||
def metadata_changed?(old_metadata, new_metadata)
|
def metadata_changed?(old_metadata, new_metadata)
|
||||||
# check metadata relevant to the directory listing
|
# check metadata relevant to the directory listing
|
||||||
# ie. the timestamp (m) is not relevant, because it's not used in
|
|
||||||
# the listing
|
|
||||||
return old_metadata["e"] != new_metadata[:e] ||
|
return old_metadata["e"] != new_metadata[:e] ||
|
||||||
old_metadata["s"] != new_metadata[:s].to_s ||
|
old_metadata["s"] != new_metadata[:s].to_s ||
|
||||||
|
old_metadata["m"] != new_metadata[:m] ||
|
||||||
old_metadata["t"] != new_metadata[:t]
|
old_metadata["t"] != new_metadata[:t]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -24,6 +24,14 @@ describe "S3 provider" do
|
|||||||
stub_request(:put, "#{container_url_for("phil")}/food/aguacate").
|
stub_request(:put, "#{container_url_for("phil")}/food/aguacate").
|
||||||
with(body: "muy deliciosa").
|
with(body: "muy deliciosa").
|
||||||
to_return(status: 200, headers: { etag: '"0815etag"' })
|
to_return(status: 200, headers: { etag: '"0815etag"' })
|
||||||
|
stub_request(:put, "#{container_url_for("phil")}/food/banano").
|
||||||
|
with(body: "si").
|
||||||
|
to_return(status: 200, headers: { etag: '"0815etag"' })
|
||||||
|
stub_request(:put, "#{container_url_for("phil")}/food/banano").
|
||||||
|
with(body: "oh, no").
|
||||||
|
to_return(status: 200, headers: { etag: '"0817etag"' })
|
||||||
|
stub_request(:head, "#{container_url_for("phil")}/food/banano").
|
||||||
|
to_return(status: 200, headers: { last_modified: "Fri, 04 Mar 2016 12:20:20 GMT" })
|
||||||
stub_request(:head, "#{container_url_for("phil")}/food/aguacate").
|
stub_request(:head, "#{container_url_for("phil")}/food/aguacate").
|
||||||
to_return(status: 200, headers: { last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
|
to_return(status: 200, headers: { last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
|
||||||
stub_request(:delete, "#{container_url_for("phil")}/food/aguacate").
|
stub_request(:delete, "#{container_url_for("phil")}/food/aguacate").
|
||||||
|
@ -38,6 +38,17 @@ shared_examples_for 'a REST adapter' do
|
|||||||
metadata["m"].length.must_equal 13
|
metadata["m"].length.must_equal 13
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "updates the metadata object in redis when it changes" do
|
||||||
|
put "/phil/food/banano", "si"
|
||||||
|
put "/phil/food/banano", "oh, no"
|
||||||
|
|
||||||
|
metadata = redis.hgetall "rs:m:phil:food/banano"
|
||||||
|
metadata["s"].must_equal "6"
|
||||||
|
metadata["t"].must_equal "text/plain; charset=utf-8"
|
||||||
|
metadata["e"].must_equal "0817etag"
|
||||||
|
metadata["m"].must_equal "1457094020000"
|
||||||
|
end
|
||||||
|
|
||||||
it "creates the directory objects metadata in redis" do
|
it "creates the directory objects metadata in redis" do
|
||||||
put "/phil/food/aguacate", "si"
|
put "/phil/food/aguacate", "si"
|
||||||
put "/phil/food/camaron", "yummi"
|
put "/phil/food/camaron", "yummi"
|
||||||
|
@ -24,6 +24,12 @@ describe "Swift provider" do
|
|||||||
stub_request(:put, "#{container_url_for("phil")}/food/aguacate").
|
stub_request(:put, "#{container_url_for("phil")}/food/aguacate").
|
||||||
with(body: "muy deliciosa").
|
with(body: "muy deliciosa").
|
||||||
to_return(status: 200, headers: { etag: "0815etag", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
|
to_return(status: 200, headers: { etag: "0815etag", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
|
||||||
|
stub_request(:put, "#{container_url_for("phil")}/food/banano").
|
||||||
|
with(body: "si").
|
||||||
|
to_return(status: 200, headers: { etag: "0815etag", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
|
||||||
|
stub_request(:put, "#{container_url_for("phil")}/food/banano").
|
||||||
|
with(body: "oh, no").
|
||||||
|
to_return(status: 200, headers: { etag: "0817etag", last_modified: "Fri, 04 Mar 2016 12:20:20 GMT" })
|
||||||
stub_request(:head, "#{container_url_for("phil")}/food/aguacate").
|
stub_request(:head, "#{container_url_for("phil")}/food/aguacate").
|
||||||
to_return(status: 200, headers: { last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
|
to_return(status: 200, headers: { last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
|
||||||
stub_request(:delete, "#{container_url_for("phil")}/food/aguacate").
|
stub_request(:delete, "#{container_url_for("phil")}/food/aguacate").
|
||||||
|
Loading…
x
Reference in New Issue
Block a user