diff --git a/app/uploaders/object_store_uploader.rb b/app/uploaders/object_store_uploader.rb index 79edc84ef4f3a57fe14a5bc1e81bce8f8388bdea..c39f23c0fc6dbc5a5c193cf7f1783aebb0581948 100644 --- a/app/uploaders/object_store_uploader.rb +++ b/app/uploaders/object_store_uploader.rb @@ -106,18 +106,20 @@ class ObjectStoreUploader < CarrierWave::Uploader::Base # 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 430c6b95c24c4d56622ff0ede3e30c7fb3a549cb..308e068ff47cff509d21b3f43096518cc3ca7471 100644 --- a/spec/uploaders/object_store_uploader_spec.rb +++ b/spec/uploaders/object_store_uploader_spec.rb @@ -184,6 +184,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