FIX: Remove double quotes from etag value in API response

https://github.com/aws/aws-sdk-ruby/issues/1134
This commit is contained in:
Vinoth Kannan 2019-02-08 14:31:19 +05:30
parent f849169619
commit cc496de10e
2 changed files with 6 additions and 13 deletions

View File

@ -43,7 +43,7 @@ class S3Helper
end end
end end
return path, etag return path, etag.gsub('"', '')
end end
def remove(s3_filename, copy_to_tombstone = false) def remove(s3_filename, copy_to_tombstone = false)

View File

@ -38,18 +38,20 @@ describe FileStore::S3Store do
context 'uploading to s3' do context 'uploading to s3' do
include_context "s3 helpers" include_context "s3 helpers"
let(:s3_object) { stub }
let(:etag) { "etag" } let(:etag) { "etag" }
before do
s3_object.stubs(:put).returns(Aws::S3::Types::PutObjectOutput.new(etag: "\"#{etag}\""))
end
describe "#store_upload" do describe "#store_upload" do
it "returns an absolute schemaless url" do it "returns an absolute schemaless url" do
store.expects(:get_depth_for).with(upload.id).returns(0) store.expects(:get_depth_for).with(upload.id).returns(0)
s3_helper.expects(:s3_bucket).returns(s3_bucket).at_least_once s3_helper.expects(:s3_bucket).returns(s3_bucket).at_least_once
s3_object = stub
s3_bucket.expects(:object).with("original/1X/#{upload.sha1}.png").returns(s3_object) s3_bucket.expects(:object).with("original/1X/#{upload.sha1}.png").returns(s3_object)
s3_object.stubs(:put).returns(Aws::S3::Types::PutObjectOutput.new(etag: etag))
expect(store.store_upload(uploaded_file, upload)).to eq( expect(store.store_upload(uploaded_file, upload)).to eq(
"//s3-upload-bucket.s3.dualstack.us-west-1.amazonaws.com/original/1X/#{upload.sha1}.png" "//s3-upload-bucket.s3.dualstack.us-west-1.amazonaws.com/original/1X/#{upload.sha1}.png"
) )
@ -64,12 +66,9 @@ describe FileStore::S3Store do
it "returns an absolute schemaless url" do it "returns an absolute schemaless url" do
store.expects(:get_depth_for).with(upload.id).returns(0) store.expects(:get_depth_for).with(upload.id).returns(0)
s3_helper.expects(:s3_bucket).returns(s3_bucket) s3_helper.expects(:s3_bucket).returns(s3_bucket)
s3_object = stub
s3_bucket.expects(:object).with("discourse-uploads/original/1X/#{upload.sha1}.png").returns(s3_object) s3_bucket.expects(:object).with("discourse-uploads/original/1X/#{upload.sha1}.png").returns(s3_object)
s3_object.stubs(:put).returns(Aws::S3::Types::PutObjectOutput.new(etag: etag))
expect(store.store_upload(uploaded_file, upload)).to eq( expect(store.store_upload(uploaded_file, upload)).to eq(
"//s3-upload-bucket.s3.dualstack.us-west-1.amazonaws.com/discourse-uploads/original/1X/#{upload.sha1}.png" "//s3-upload-bucket.s3.dualstack.us-west-1.amazonaws.com/discourse-uploads/original/1X/#{upload.sha1}.png"
) )
@ -82,13 +81,10 @@ describe FileStore::S3Store do
it "returns an absolute schemaless url" do it "returns an absolute schemaless url" do
store.expects(:get_depth_for).with(optimized_image.upload.id).returns(0) store.expects(:get_depth_for).with(optimized_image.upload.id).returns(0)
s3_helper.expects(:s3_bucket).returns(s3_bucket) s3_helper.expects(:s3_bucket).returns(s3_bucket)
s3_object = stub
path = "optimized/1X/#{optimized_image.upload.sha1}_#{OptimizedImage::VERSION}_100x200.png" path = "optimized/1X/#{optimized_image.upload.sha1}_#{OptimizedImage::VERSION}_100x200.png"
s3_bucket.expects(:object).with(path).returns(s3_object) s3_bucket.expects(:object).with(path).returns(s3_object)
s3_object.stubs(:put).returns(Aws::S3::Types::PutObjectOutput.new(etag: etag))
expect(store.store_optimized_image(optimized_image_file, optimized_image)).to eq( expect(store.store_optimized_image(optimized_image_file, optimized_image)).to eq(
"//s3-upload-bucket.s3.dualstack.us-west-1.amazonaws.com/#{path}" "//s3-upload-bucket.s3.dualstack.us-west-1.amazonaws.com/#{path}"
) )
@ -103,13 +99,10 @@ describe FileStore::S3Store do
it "returns an absolute schemaless url" do it "returns an absolute schemaless url" do
store.expects(:get_depth_for).with(optimized_image.upload.id).returns(0) store.expects(:get_depth_for).with(optimized_image.upload.id).returns(0)
s3_helper.expects(:s3_bucket).returns(s3_bucket) s3_helper.expects(:s3_bucket).returns(s3_bucket)
s3_object = stub
path = "discourse-uploads/optimized/1X/#{optimized_image.upload.sha1}_#{OptimizedImage::VERSION}_100x200.png" path = "discourse-uploads/optimized/1X/#{optimized_image.upload.sha1}_#{OptimizedImage::VERSION}_100x200.png"
s3_bucket.expects(:object).with(path).returns(s3_object) s3_bucket.expects(:object).with(path).returns(s3_object)
s3_object.stubs(:put).returns(Aws::S3::Types::PutObjectOutput.new(etag: etag))
expect(store.store_optimized_image(optimized_image_file, optimized_image)).to eq( expect(store.store_optimized_image(optimized_image_file, optimized_image)).to eq(
"//s3-upload-bucket.s3.dualstack.us-west-1.amazonaws.com/#{path}" "//s3-upload-bucket.s3.dualstack.us-west-1.amazonaws.com/#{path}"
) )