diff options
Diffstat (limited to 'spec/tasks/gitlab/dependency_proxy/migrate_rake_spec.rb')
-rw-r--r-- | spec/tasks/gitlab/dependency_proxy/migrate_rake_spec.rb | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/spec/tasks/gitlab/dependency_proxy/migrate_rake_spec.rb b/spec/tasks/gitlab/dependency_proxy/migrate_rake_spec.rb new file mode 100644 index 00000000000..edd56f1667f --- /dev/null +++ b/spec/tasks/gitlab/dependency_proxy/migrate_rake_spec.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +require 'rake_helper' + +RSpec.describe 'gitlab:dependency_proxy namespace rake task', :silence_stdout do + before :all do + Rake.application.rake_require 'tasks/gitlab/dependency_proxy/migrate' + end + + describe 'migrate' do + let(:local) { ObjectStorage::Store::LOCAL } + let(:remote) { ObjectStorage::Store::REMOTE } + let!(:blob) { create(:dependency_proxy_blob) } + let!(:manifest) { create(:dependency_proxy_manifest) } + + def dependency_proxy_migrate + run_rake_task('gitlab:dependency_proxy:migrate') + end + + context 'object storage disabled' do + before do + stub_dependency_proxy_object_storage(enabled: false) + end + + it "doesn't migrate files" do + expect { dependency_proxy_migrate }.to raise_error('Object store is disabled for dependency proxy feature') + end + end + + context 'object storage enabled' do + before do + stub_dependency_proxy_object_storage + end + + it 'migrates local file to object storage' do + expect { dependency_proxy_migrate }.to change { blob.reload.file_store }.from(local).to(remote) + .and change { manifest.reload.file_store }.from(local).to(remote) + end + end + + context 'an error is raised while migrating' do + let(:blob_error) { 'Failed to transfer dependency proxy blob file' } + let(:manifest_error) { 'Failed to transfer dependency proxy manifest file' } + let!(:blob_non_existent) { create(:dependency_proxy_blob) } + let!(:manifest_non_existent) { create(:dependency_proxy_manifest) } + + before do + stub_dependency_proxy_object_storage + blob_non_existent.file.file.delete + manifest_non_existent.file.file.delete + end + + it 'fails to migrate a local file that does not exist' do + expect { dependency_proxy_migrate }.to output(include(blob_error, manifest_error)).to_stdout + end + end + end +end |