summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/uploaders/object_store_uploader.rb24
-rw-r--r--spec/uploaders/object_store_uploader_spec.rb10
2 files changed, 23 insertions, 11 deletions
diff --git a/app/uploaders/object_store_uploader.rb b/app/uploaders/object_store_uploader.rb
index 3a742d4f715..9b9f47d5943 100644
--- a/app/uploaders/object_store_uploader.rb
+++ b/app/uploaders/object_store_uploader.rb
@@ -94,18 +94,20 @@ class ObjectStoreUploader < GitlabUploader
# change storage
self.object_store = new_store
- storage.store!(file).tap do |new_file|
- # since we change storage store the new storage
- # in case of failure delete new file
- begin
- subject.save!
- rescue => e
- new_file.delete
- self.object_store = old_store
- raise e
+ with_callbacks(:store, file) do
+ storage.store!(file).tap do |new_file|
+ # since we change storage store the new storage
+ # in case of failure delete new file
+ begin
+ subject.save!
+ rescue => e
+ new_file.delete
+ self.object_store = old_store
+ raise e
+ end
+
+ old_file.delete
end
-
- old_file.delete
end
end
diff --git a/spec/uploaders/object_store_uploader_spec.rb b/spec/uploaders/object_store_uploader_spec.rb
index c5554502980..dd08a40eb97 100644
--- a/spec/uploaders/object_store_uploader_spec.rb
+++ b/spec/uploaders/object_store_uploader_spec.rb
@@ -111,6 +111,16 @@ describe ObjectStoreUploader do
end
end
+ context 'when storage is unlicensed' do
+ before do
+ stub_artifacts_object_storage(licensed: false)
+ end
+
+ it "raises an error" do
+ expect { subject }.to raise_error(/Object Storage feature is missing/)
+ end
+ end
+
context 'when credentials are set' do
before do
stub_artifacts_object_storage