diff options
author | Stan Hu <stanhu@gmail.com> | 2018-09-14 01:58:04 +0300 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-09-14 17:43:39 +0300 |
commit | 244ed8adb3bc2d1b4706a695e19e144e180084f3 (patch) | |
tree | b274dde215c9bcd40d4e9819acfb8f5d93249bac /spec/lib/object_storage | |
parent | 32b96bfd81ff254142dbd9c73e1a494308213cb3 (diff) |
Fix object storage uploads not working with AWS v2
Because we were passing query strings as symbols, the fog-aws storage
driver was omitting the uploadId and partNumber query strings
from the signature in multipart uploads. This fix makes AWS and Ceph work with
v2 signatures.
See: https://github.com/fog/fog-aws/blob/v3.0.0/lib/fog/aws/storage.rb#L733
Closes https://gitlab.com/gitlab-org/gitlab-workhorse/issues/181
Diffstat (limited to 'spec/lib/object_storage')
-rw-r--r-- | spec/lib/object_storage/direct_upload_spec.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/spec/lib/object_storage/direct_upload_spec.rb b/spec/lib/object_storage/direct_upload_spec.rb index 9c308cc1be9..1024e1a25ea 100644 --- a/spec/lib/object_storage/direct_upload_spec.rb +++ b/spec/lib/object_storage/direct_upload_spec.rb @@ -83,6 +83,16 @@ describe ObjectStorage::DirectUpload do expect(subject[:MultipartUpload][:AbortURL]).to start_with(storage_url) expect(subject[:MultipartUpload][:AbortURL]).to include('uploadId=myUpload') end + + it 'uses only strings in query parameters' do + expect(direct_upload.send(:connection)).to receive(:signed_url).at_least(:once) do |params| + if params[:query] + expect(params[:query].keys.all? { |key| key.is_a?(String) }).to be_truthy + end + end + + subject + end end shared_examples 'a valid upload without multipart data' do |