summaryrefslogtreecommitdiff
path: root/spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb')
-rw-r--r--spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb97
1 files changed, 49 insertions, 48 deletions
diff --git a/spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb b/spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb
index af39ec7a11c..583485faf8d 100644
--- a/spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb
+++ b/spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb
@@ -3,71 +3,72 @@
require 'spec_helper'
RSpec.describe BulkImports::Projects::Pipelines::RepositoryPipeline do
- describe '#run' do
- let_it_be(:user) { create(:user) }
- let_it_be(:parent) { create(:project) }
- let_it_be(:bulk_import) { create(:bulk_import, user: user) }
- let_it_be(:bulk_import_configuration) { create(:bulk_import_configuration, bulk_import: bulk_import) }
-
- let_it_be(:entity) do
- create(
- :bulk_import_entity,
- :project_entity,
- bulk_import: bulk_import,
- source_full_path: 'source/full/path',
- destination_name: 'My Destination Repository',
- destination_namespace: parent.full_path,
- project: parent
- )
- end
+ let_it_be(:user) { create(:user) }
+ let_it_be(:parent) { create(:project) }
+ let_it_be(:bulk_import) { create(:bulk_import, user: user) }
+ let_it_be(:bulk_import_configuration) { create(:bulk_import_configuration, bulk_import: bulk_import) }
+
+ let_it_be(:entity) do
+ create(
+ :bulk_import_entity,
+ :project_entity,
+ bulk_import: bulk_import,
+ source_full_path: 'source/full/path',
+ destination_name: 'My Destination Repository',
+ destination_namespace: parent.full_path,
+ project: parent
+ )
+ end
- let_it_be(:tracker) { create(:bulk_import_tracker, entity: entity) }
- let_it_be(:context) { BulkImports::Pipeline::Context.new(tracker) }
+ let_it_be(:tracker) { create(:bulk_import_tracker, entity: entity) }
+ let_it_be(:context) { BulkImports::Pipeline::Context.new(tracker) }
- context 'successfully imports repository' do
- let(:project_data) do
- {
- 'httpUrlToRepo' => 'http://test.git'
- }
- end
+ let(:extracted_data) { BulkImports::Pipeline::ExtractedData.new(data: project_data) }
- subject { described_class.new(context) }
+ subject(:pipeline) { described_class.new(context) }
+
+ before do
+ allow_next_instance_of(BulkImports::Common::Extractors::GraphqlExtractor) do |extractor|
+ allow(extractor).to receive(:extract).and_return(extracted_data)
+ end
+ end
+
+ describe '#run' do
+ context 'successfully imports repository' do
+ let(:project_data) { { 'httpUrlToRepo' => 'http://test.git' } }
it 'imports new repository into destination project' do
- allow_next_instance_of(BulkImports::Common::Extractors::GraphqlExtractor) do |extractor|
- allow(extractor).to receive(:extract).and_return(BulkImports::Pipeline::ExtractedData.new(data: project_data))
- end
+ url = project_data['httpUrlToRepo'].sub("://", "://oauth2:#{bulk_import_configuration.access_token}@")
- expect_next_instance_of(Gitlab::GitalyClient::RepositoryService) do |repository_service|
- url = project_data['httpUrlToRepo'].sub("://", "://oauth2:#{bulk_import_configuration.access_token}@")
- expect(repository_service).to receive(:import_repository).with(url).and_return 0
- end
+ expect(context.portable).to receive(:ensure_repository)
+ expect(context.portable.repository).to receive(:fetch_as_mirror).with(url)
- subject.run
+ pipeline.run
end
end
context 'blocked local networks' do
- let(:project_data) do
- {
- 'httpUrlToRepo' => 'http://localhost/foo.git'
- }
- end
+ let(:project_data) { { 'httpUrlToRepo' => 'http://localhost/foo.git' } }
- before do
+ it 'imports new repository into destination project' do
allow(Gitlab.config.gitlab).to receive(:host).and_return('notlocalhost.gitlab.com')
allow(Gitlab::CurrentSettings).to receive(:allow_local_requests_from_web_hooks_and_services?).and_return(false)
- allow_next_instance_of(BulkImports::Common::Extractors::GraphqlExtractor) do |extractor|
- allow(extractor).to receive(:extract).and_return(BulkImports::Pipeline::ExtractedData.new(data: project_data))
- end
- end
- subject { described_class.new(context) }
+ pipeline.run
- it 'imports new repository into destination project' do
- subject.run
- expect(context.entity.failed?).to be_truthy
+ expect(context.entity.failed?).to eq(true)
end
end
end
+
+ describe '#after_run' do
+ it 'executes housekeeping service after import' do
+ service = instance_double(Repositories::HousekeepingService)
+
+ expect(Repositories::HousekeepingService).to receive(:new).with(context.portable, :gc).and_return(service)
+ expect(service).to receive(:execute)
+
+ pipeline.after_run(context)
+ end
+ end
end