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/destroy_rollback_service_spec.rb')
-rw-r--r--spec/services/projects/destroy_rollback_service_spec.rb45
1 files changed, 45 insertions, 0 deletions
diff --git a/spec/services/projects/destroy_rollback_service_spec.rb b/spec/services/projects/destroy_rollback_service_spec.rb
new file mode 100644
index 00000000000..8facf17dc45
--- /dev/null
+++ b/spec/services/projects/destroy_rollback_service_spec.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+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