Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/projects')
-rw-r--r--spec/services/projects/after_rename_service_spec.rb34
-rw-r--r--spec/services/projects/autocomplete_service_spec.rb1
-rw-r--r--spec/services/projects/destroy_rollback_service_spec.rb46
-rw-r--r--spec/services/projects/destroy_service_spec.rb57
-rw-r--r--spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb13
-rw-r--r--spec/services/projects/transfer_service_spec.rb12
-rw-r--r--spec/services/projects/update_pages_service_spec.rb19
7 files changed, 48 insertions, 134 deletions
diff --git a/spec/services/projects/after_rename_service_spec.rb b/spec/services/projects/after_rename_service_spec.rb
index a8db87e48d0..a9329f092fa 100644
--- a/spec/services/projects/after_rename_service_spec.rb
+++ b/spec/services/projects/after_rename_service_spec.rb
@@ -64,22 +64,11 @@ RSpec.describe Projects::AfterRenameService do
allow(project_storage).to receive(:rename_repo) { true }
end
- context 'when the project has pages deployed' do
- it 'schedules a move of the pages directory' do
- allow(project).to receive(:pages_deployed?).and_return(true)
-
- expect(PagesTransferWorker).to receive(:perform_async).with('rename_project', anything)
-
- service_execute
- end
- end
-
context 'when the project does not have pages deployed' do
it 'does nothing with the pages directory' do
allow(project).to receive(:pages_deployed?).and_return(false)
expect(PagesTransferWorker).not_to receive(:perform_async)
- expect(Gitlab::PagesTransfer).not_to receive(:new)
service_execute
end
@@ -172,29 +161,6 @@ RSpec.describe Projects::AfterRenameService do
end
end
- context 'gitlab pages' do
- context 'when the project has pages deployed' do
- it 'schedules a move of the pages directory' do
- allow(project).to receive(:pages_deployed?).and_return(true)
-
- expect(PagesTransferWorker).to receive(:perform_async).with('rename_project', anything)
-
- service_execute
- end
- end
-
- context 'when the project does not have pages deployed' do
- it 'does nothing with the pages directory' do
- allow(project).to receive(:pages_deployed?).and_return(false)
-
- expect(PagesTransferWorker).not_to receive(:perform_async)
- expect(Gitlab::PagesTransfer).not_to receive(:new)
-
- service_execute
- end
- end
- end
-
context 'attachments' do
let(:uploader) { create(:upload, :issuable_upload, :with_file, model: project) }
let(:file_uploader) { build(:file_uploader, project: project) }
diff --git a/spec/services/projects/autocomplete_service_spec.rb b/spec/services/projects/autocomplete_service_spec.rb
index ed043bacf31..54a21d2f22b 100644
--- a/spec/services/projects/autocomplete_service_spec.rb
+++ b/spec/services/projects/autocomplete_service_spec.rb
@@ -158,7 +158,6 @@ RSpec.describe Projects::AutocompleteService do
subject { described_class.new(project, user).contacts.as_json }
before do
- stub_feature_flags(customer_relations: true)
group.add_developer(user)
end
diff --git a/spec/services/projects/destroy_rollback_service_spec.rb b/spec/services/projects/destroy_rollback_service_spec.rb
deleted file mode 100644
index 3eaacc8c1e7..00000000000
--- a/spec/services/projects/destroy_rollback_service_spec.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Projects::DestroyRollbackService do
- let_it_be(:user) { create(:user) }
- let_it_be(:project) { create(:project, :repository, namespace: user.namespace) }
-
- let(:repository) { project.repository }
- let(:repository_storage) { project.repository_storage }
-
- subject { described_class.new(project, user, {}).execute }
-
- describe '#execute' do
- let(:path) { repository.disk_path + '.git' }
- let(:removal_path) { "#{repository.disk_path}+#{project.id}#{Repositories::DestroyService::DELETED_FLAG}.git" }
-
- before do
- aggregate_failures do
- expect(TestEnv.storage_dir_exists?(repository_storage, path)).to be_truthy
- expect(TestEnv.storage_dir_exists?(repository_storage, removal_path)).to be_falsey
- end
-
- # Don't run sidekiq to check if renamed repository exists
- Sidekiq::Testing.fake! { destroy_project(project, user, {}) }
-
- aggregate_failures do
- expect(TestEnv.storage_dir_exists?(repository_storage, path)).to be_falsey
- expect(TestEnv.storage_dir_exists?(repository_storage, removal_path)).to be_truthy
- end
- end
-
- it 'restores the repositories' do
- Sidekiq::Testing.fake! { subject }
-
- aggregate_failures do
- expect(TestEnv.storage_dir_exists?(repository_storage, path)).to be_truthy
- expect(TestEnv.storage_dir_exists?(repository_storage, removal_path)).to be_falsey
- end
- end
- end
-
- def destroy_project(project, user, params = {})
- Projects::DestroyService.new(project, user, params).execute
- end
-end
diff --git a/spec/services/projects/destroy_service_spec.rb b/spec/services/projects/destroy_service_spec.rb
index cd923720631..c00438199fd 100644
--- a/spec/services/projects/destroy_service_spec.rb
+++ b/spec/services/projects/destroy_service_spec.rb
@@ -9,7 +9,6 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi
let!(:project) { create(:project, :repository, namespace: user.namespace) }
let(:path) { project.repository.disk_path }
- let(:remove_path) { removal_path(path) }
let(:async) { false } # execute or async_execute
before do
@@ -24,7 +23,6 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi
expect(Project.unscoped.all).not_to include(project)
expect(project.gitlab_shell.repository_exists?(project.repository_storage, path + '.git')).to be_falsey
- expect(project.gitlab_shell.repository_exists?(project.repository_storage, remove_path + '.git')).to be_falsey
end
it 'publishes a ProjectDeleted event with project id and namespace id' do
@@ -73,6 +71,18 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi
end
it_behaves_like 'deleting the project'
+
+ context 'when project is undergoing refresh' do
+ let!(:build_artifacts_size_refresh) { create(:project_build_artifacts_size_refresh, :pending, project: project) }
+
+ it 'does not log about artifact deletion but continues to delete artifacts' do
+ expect(Gitlab::ProjectStatsRefreshConflictsLogger).not_to receive(:warn_artifact_deletion_during_stats_refresh)
+
+ expect { destroy_project(project, user, {}) }
+ .to change { Ci::JobArtifact.count }.by(-2)
+ .and change { Projects::BuildArtifactsSizeRefresh.count }.by(-1)
+ end
+ end
end
end
@@ -192,10 +202,6 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi
it do
expect(project.gitlab_shell.repository_exists?(project.repository_storage, path + '.git')).to be_falsey
end
-
- it do
- expect(project.gitlab_shell.repository_exists?(project.repository_storage, remove_path + '.git')).to be_truthy
- end
end
context 'when flushing caches fail due to Git errors' do
@@ -392,36 +398,13 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi
end
end
- context 'repository +deleted path removal' do
- context 'regular phase' do
- it 'schedules +deleted removal of existing repos' do
- service = described_class.new(project, user, {})
- allow(service).to receive(:schedule_stale_repos_removal)
-
- expect(Repositories::ShellDestroyService).to receive(:new).and_call_original
- expect(GitlabShellWorker).to receive(:perform_in)
- .with(5.minutes, :remove_repository, project.repository_storage, removal_path(project.disk_path))
-
- service.execute
+ context 'repository removal' do
+ it 'removal of existing repos' do
+ expect_next_instances_of(Repositories::DestroyService, 2) do |instance|
+ expect(instance).to receive(:execute).and_return(status: :success)
end
- end
-
- context 'stale cleanup' do
- let(:async) { true }
-
- it 'schedules +deleted wiki and repo removal' do
- allow(ProjectDestroyWorker).to receive(:perform_async)
-
- expect(Repositories::ShellDestroyService).to receive(:new).with(project.repository).and_call_original
- expect(GitlabShellWorker).to receive(:perform_in)
- .with(10.minutes, :remove_repository, project.repository_storage, removal_path(project.disk_path))
-
- expect(Repositories::ShellDestroyService).to receive(:new).with(project.wiki.repository).and_call_original
- expect(GitlabShellWorker).to receive(:perform_in)
- .with(10.minutes, :remove_repository, project.repository_storage, removal_path(project.wiki.disk_path))
- destroy_project(project, user, {})
- end
+ described_class.new(project, user, {}).execute
end
end
@@ -480,7 +463,6 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi
expect do
destroy_project(project, user)
end.to change(WebHook, :count).by(-2)
- .and change(WebHookLog, :count).by(-1)
end
context 'when an error is raised deleting webhooks' do
@@ -541,7 +523,6 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi
expect(Project.unscoped.all).not_to include(project)
expect(project.gitlab_shell.repository_exists?(project.repository_storage, path + '.git')).to be_falsey
- expect(project.gitlab_shell.repository_exists?(project.repository_storage, remove_path + '.git')).to be_falsey
expect(project.all_pipelines).to be_empty
expect(project.builds).to be_empty
end
@@ -550,8 +531,4 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi
def destroy_project(project, user, params = {})
described_class.new(project, user, params).public_send(async ? :async_execute : :execute)
end
-
- def removal_path(path)
- "#{path}+#{project.id}#{Repositories::DestroyService::DELETED_FLAG}"
- end
end
diff --git a/spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb b/spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb
index 41487e9ea48..6a715312097 100644
--- a/spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb
+++ b/spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb
@@ -52,6 +52,12 @@ RSpec.describe Projects::RefreshBuildArtifactsSizeStatisticsService, :clean_gitl
expect { service.execute }.to change { refresh.reload.last_job_artifact_id.to_i }.to(artifact_3.id)
end
+ it 'updates the last_job_artifact_id to the ID of the last artifact from the project' do
+ expect { service.execute }
+ .to change { refresh.reload.last_job_artifact_id_on_refresh_start.to_i }
+ .to(project.job_artifacts.last.id)
+ end
+
it 'requeues the refresh job' do
service.execute
expect(refresh.reload).to be_pending
@@ -63,7 +69,8 @@ RSpec.describe Projects::RefreshBuildArtifactsSizeStatisticsService, :clean_gitl
:project_build_artifacts_size_refresh,
:pending,
project: project,
- last_job_artifact_id: artifact_3.id
+ last_job_artifact_id: artifact_3.id,
+ last_job_artifact_id_on_refresh_start: artifact_4.id
)
end
@@ -77,6 +84,10 @@ RSpec.describe Projects::RefreshBuildArtifactsSizeStatisticsService, :clean_gitl
expect(refresh.reload.last_job_artifact_id).to eq(artifact_3.id)
end
+ it 'keeps the last_job_artifact_id_on_refresh_start unchanged' do
+ expect(refresh.reload.last_job_artifact_id_on_refresh_start).to eq(artifact_4.id)
+ end
+
it 'keeps the state of the refresh record at running' do
expect(refresh.reload).to be_running
end
diff --git a/spec/services/projects/transfer_service_spec.rb b/spec/services/projects/transfer_service_spec.rb
index e547ace1d9f..bebe80b710b 100644
--- a/spec/services/projects/transfer_service_spec.rb
+++ b/spec/services/projects/transfer_service_spec.rb
@@ -53,9 +53,6 @@ RSpec.describe Projects::TransferService do
allow_next_instance_of(Gitlab::UploadsTransfer) do |service|
allow(service).to receive(:move_project).and_return(true)
end
- allow_next_instance_of(Gitlab::PagesTransfer) do |service|
- allow(service).to receive(:move_project).and_return(true)
- end
group.add_owner(user)
end
@@ -725,15 +722,6 @@ RSpec.describe Projects::TransferService do
group.add_owner(user)
end
- it 'schedules a job when pages are deployed' do
- project.mark_pages_as_deployed
-
- expect(PagesTransferWorker).to receive(:perform_async)
- .with("move_project", [project.path, user.namespace.full_path, group.full_path])
-
- execute_transfer
- end
-
it 'does not schedule a job when no pages are deployed' do
expect(PagesTransferWorker).not_to receive(:perform_async)
diff --git a/spec/services/projects/update_pages_service_spec.rb b/spec/services/projects/update_pages_service_spec.rb
index 777162b6196..cbbed82aa0b 100644
--- a/spec/services/projects/update_pages_service_spec.rb
+++ b/spec/services/projects/update_pages_service_spec.rb
@@ -205,6 +205,25 @@ RSpec.describe Projects::UpdatePagesService do
include_examples 'fails with outdated reference message'
end
end
+
+ context 'when uploaded deployment size is wrong' do
+ it 'raises an error' do
+ allow_next_instance_of(PagesDeployment) do |deployment|
+ allow(deployment)
+ .to receive(:size)
+ .and_return(file.size + 1)
+ end
+
+ expect do
+ expect(execute).not_to eq(:success)
+
+ expect(GenericCommitStatus.last.description).to eq("Error: The uploaded artifact size does not match the expected value.")
+ project.pages_metadatum.reload
+ expect(project.pages_metadatum).not_to be_deployed
+ expect(project.pages_metadatum.pages_deployment).to be_ni
+ end.to raise_error(Projects::UpdatePagesService::WrongUploadedDeploymentSizeError)
+ end
+ end
end
end