diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-14 19:45:29 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-14 19:45:29 +0000 |
commit | b9fe665d2539f53fb86771383e18f9045db52414 (patch) | |
tree | 7e55fcd9b4dc27f3cb13651ce1c03146c592e483 /spec | |
parent | dd22031c62b54a03909b7be829f85032e556a031 (diff) | |
download | gitlab-ce-b9fe665d2539f53fb86771383e18f9045db52414.tar.gz |
Add latest changes from gitlab-org/gitlab@14-8-stable-ee
Diffstat (limited to 'spec')
4 files changed, 49 insertions, 11 deletions
diff --git a/spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb b/spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb index b5adb603dab..e6ef2d8a541 100644 --- a/spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb +++ b/spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb @@ -34,10 +34,33 @@ RSpec.describe Gitlab::Cleanup::OrphanJobArtifactFiles do cleanup.run! end - it 'finds artifacts on disk' do + it 'finds job artifacts on disk' do artifact = create(:ci_job_artifact, :archive) + artifact_directory = artifact.file.relative_path.to_s.split('/')[0...6].join('/') + + cleaned = [] + + expect(cleanup).to receive(:find_artifacts).and_wrap_original do |original_method, *args, &block| + original_method.call(*args) { |dir| cleaned << dir } + end + + cleanup.run! + + expect(cleaned).to include(/#{artifact_directory}/) + end + + it 'does not find pipeline artifacts on disk' do + artifact = create(:ci_pipeline_artifact, :with_coverage_report) + # using 0...6 to match the -min/maxdepth 6 strictly, since this is one directory + # deeper than job artifacts, and .dirname would not match + artifact_directory = artifact.file.relative_path.to_s.split('/')[0...6].join('/') + + expect(cleanup).to receive(:find_artifacts).and_wrap_original do |original_method, *args, &block| + # this can either _not_ yield at all, or yield with any other file + # except the one that we're explicitly excluding + original_method.call(*args) { |path| expect(path).not_to match(artifact_directory) } + end - expect(cleanup).to receive(:find_artifacts).and_yield(artifact.file.path) cleanup.run! end diff --git a/spec/services/users/destroy_service_spec.rb b/spec/services/users/destroy_service_spec.rb index 76b84e3b4ab..602db66dba1 100644 --- a/spec/services/users/destroy_service_spec.rb +++ b/spec/services/users/destroy_service_spec.rb @@ -215,8 +215,8 @@ RSpec.describe Users::DestroyService do end end - context "migrating associated records" do - let!(:issue) { create(:issue, author: user) } + context 'migrating associated records' do + let!(:issue) { create(:issue, author: user) } it 'delegates to the `MigrateToGhostUser` service to move associated records to the ghost user' do expect_any_instance_of(Users::MigrateToGhostUserService).to receive(:execute).once.and_call_original @@ -226,12 +226,14 @@ RSpec.describe Users::DestroyService do expect(issue.reload.author).to be_ghost end - it 'does not run `MigrateToGhostUser` if hard_delete option is given' do - expect_any_instance_of(Users::MigrateToGhostUserService).not_to receive(:execute) + context 'when hard_delete option is given' do + it 'will not ghost certain records' do + expect_any_instance_of(Users::MigrateToGhostUserService).to receive(:execute).once.and_call_original - service.execute(user, hard_delete: true) + service.execute(user, hard_delete: true) - expect(Issue.exists?(issue.id)).to be_falsy + expect(Issue.exists?(issue.id)).to be_falsy + end end end diff --git a/spec/services/users/migrate_to_ghost_user_service_spec.rb b/spec/services/users/migrate_to_ghost_user_service_spec.rb index c36889f20ec..073ebaae5b0 100644 --- a/spec/services/users/migrate_to_ghost_user_service_spec.rb +++ b/spec/services/users/migrate_to_ghost_user_service_spec.rb @@ -3,9 +3,10 @@ require 'spec_helper' RSpec.describe Users::MigrateToGhostUserService do - let!(:user) { create(:user) } - let!(:project) { create(:project, :repository) } - let(:service) { described_class.new(user) } + let!(:user) { create(:user) } + let!(:project) { create(:project, :repository) } + let(:service) { described_class.new(user) } + let(:always_ghost) { false } context "migrating a user's associated records to the ghost user" do context 'issues' do diff --git a/spec/support/services/migrate_to_ghost_user_service_shared_examples.rb b/spec/support/services/migrate_to_ghost_user_service_shared_examples.rb index 2fbc01a9195..1e291a90163 100644 --- a/spec/support/services/migrate_to_ghost_user_service_shared_examples.rb +++ b/spec/support/services/migrate_to_ghost_user_service_shared_examples.rb @@ -42,6 +42,18 @@ RSpec.shared_examples "migrating a deleted user's associated records to the ghos end end + it 'will only migrate specific records during a hard_delete' do + service.execute(hard_delete: true) + + migrated_record = record_class.find_by_id(record.id) + + check_user = always_ghost ? User.ghost : user + + migrated_fields.each do |field| + expect(migrated_record.public_send(field)).to eq(check_user) + end + end + context "race conditions" do context "when #{record_class_name} migration fails and is rolled back" do before do |