diff options
Diffstat (limited to 'spec/services/projects/import_service_spec.rb')
-rw-r--r-- | spec/services/projects/import_service_spec.rb | 102 |
1 files changed, 65 insertions, 37 deletions
diff --git a/spec/services/projects/import_service_spec.rb b/spec/services/projects/import_service_spec.rb index 97a3b338069..16b9d2618ca 100644 --- a/spec/services/projects/import_service_spec.rb +++ b/spec/services/projects/import_service_spec.rb @@ -163,72 +163,100 @@ RSpec.describe Projects::ImportService, feature_category: :importers do context 'when importer does not support refmap' do it 'succeeds if repository import is successful' do - expect(project.repository).to receive(:import_repository).and_return(true) - expect_next_instance_of(Gitlab::BitbucketImport::Importer) do |importer| + expect_next_instance_of(Gitlab::BitbucketImport::ParallelImporter) do |importer| expect(importer).to receive(:execute).and_return(true) end - expect_next_instance_of(Projects::LfsPointers::LfsImportService) do |service| - expect(service).to receive(:execute).and_return(status: :success) - end - result = subject.execute expect(result[:status]).to eq :success end it 'fails if repository import fails' do - expect(project.repository) - .to receive(:import_repository) - .with('https://bitbucket.org/vim/vim.git', resolved_address: '') - .and_raise(Gitlab::Git::CommandError, 'Failed to import the repository /a/b/c') + expect_next_instance_of(Gitlab::BitbucketImport::ParallelImporter) do |importer| + expect(importer).to receive(:execute) + .and_raise(Gitlab::Git::CommandError, 'Failed to import the repository /a/b/c') + end result = subject.execute expect(result[:status]).to eq :error expect(result[:message]).to eq "Error importing repository #{project.safe_import_url} into #{project.full_path} - Failed to import the repository [FILTERED]" end - end - context 'when lfs import fails' do - it 'logs the error' do - error_message = 'error message' + context 'when bitbucket_parallel_importer feature flag is disabled' do + before do + stub_feature_flags(bitbucket_parallel_importer: false) + end - expect(project.repository).to receive(:import_repository).and_return(true) + it 'succeeds if repository import is successful' do + expect(project.repository).to receive(:import_repository).and_return(true) + expect_next_instance_of(Gitlab::BitbucketImport::Importer) do |importer| + expect(importer).to receive(:execute).and_return(true) + end - expect_next_instance_of(Gitlab::BitbucketImport::Importer) do |importer| - expect(importer).to receive(:execute).and_return(true) + expect_next_instance_of(Projects::LfsPointers::LfsImportService) do |service| + expect(service).to receive(:execute).and_return(status: :success) + end + + result = subject.execute + + expect(result[:status]).to eq :success end - expect_next_instance_of(Projects::LfsPointers::LfsImportService) do |service| - expect(service).to receive(:execute).and_return(status: :error, message: error_message) + it 'fails if repository import fails' do + expect(project.repository) + .to receive(:import_repository) + .with('https://bitbucket.org/vim/vim.git', resolved_address: '') + .and_raise(Gitlab::Git::CommandError, 'Failed to import the repository /a/b/c') + + result = subject.execute + + expect(result[:status]).to eq :error + expect(result[:message]).to eq "Error importing repository #{project.safe_import_url} into #{project.full_path} - Failed to import the repository [FILTERED]" end - expect(Gitlab::AppLogger).to receive(:error).with("The Lfs import process failed. #{error_message}") + context 'when lfs import fails' do + it 'logs the error' do + error_message = 'error message' - subject.execute - end - end + expect(project.repository).to receive(:import_repository).and_return(true) - context 'when repository import scheduled' do - before do - expect(project.repository).to receive(:import_repository).and_return(true) - allow(subject).to receive(:import_data) - end + expect_next_instance_of(Gitlab::BitbucketImport::Importer) do |importer| + expect(importer).to receive(:execute).and_return(true) + end - it 'downloads lfs objects if lfs_enabled is enabled for project' do - allow(project).to receive(:lfs_enabled?).and_return(true) + expect_next_instance_of(Projects::LfsPointers::LfsImportService) do |service| + expect(service).to receive(:execute).and_return(status: :error, message: error_message) + end - expect_any_instance_of(Projects::LfsPointers::LfsImportService).to receive(:execute) + expect(Gitlab::AppLogger).to receive(:error).with("The Lfs import process failed. #{error_message}") - subject.execute - end + subject.execute + end + end - it 'does not download lfs objects if lfs_enabled is not enabled for project' do - allow(project).to receive(:lfs_enabled?).and_return(false) - expect_any_instance_of(Projects::LfsPointers::LfsImportService).not_to receive(:execute) + context 'when repository import scheduled' do + before do + expect(project.repository).to receive(:import_repository).and_return(true) + allow(subject).to receive(:import_data) + end - subject.execute + it 'downloads lfs objects if lfs_enabled is enabled for project' do + allow(project).to receive(:lfs_enabled?).and_return(true) + + expect_any_instance_of(Projects::LfsPointers::LfsImportService).to receive(:execute) + + subject.execute + end + + it 'does not download lfs objects if lfs_enabled is not enabled for project' do + allow(project).to receive(:lfs_enabled?).and_return(false) + expect_any_instance_of(Projects::LfsPointers::LfsImportService).not_to receive(:execute) + + subject.execute + end + end end end end |