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/admin/abuse_report_update_service_spec.rb')
-rw-r--r--spec/services/admin/abuse_report_update_service_spec.rb212
1 files changed, 0 insertions, 212 deletions
diff --git a/spec/services/admin/abuse_report_update_service_spec.rb b/spec/services/admin/abuse_report_update_service_spec.rb
deleted file mode 100644
index 7069d8ee5c1..00000000000
--- a/spec/services/admin/abuse_report_update_service_spec.rb
+++ /dev/null
@@ -1,212 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Admin::AbuseReportUpdateService, feature_category: :instance_resiliency do
- let_it_be_with_reload(:abuse_report) { create(:abuse_report) }
- let(:action) { 'ban_user' }
- let(:close) { true }
- let(:reason) { 'spam' }
- let(:params) { { user_action: action, close: close, reason: reason, comment: 'obvious spam' } }
- let_it_be(:admin) { create(:admin) }
-
- let(:service) { described_class.new(abuse_report, admin, params) }
-
- describe '#execute', :enable_admin_mode do
- subject { service.execute }
-
- shared_examples 'returns an error response' do |error|
- it 'returns an error response' do
- expect(subject.status).to eq :error
- expect(subject.message).to eq error
- end
- end
-
- shared_examples 'closes the report' do
- it 'closes the report' do
- expect { subject }.to change { abuse_report.closed? }.from(false).to(true)
- end
- end
-
- shared_examples 'does not close the report' do
- it 'does not close the report' do
- subject
- expect(abuse_report.closed?).to be(false)
- end
- end
-
- shared_examples 'does not record an event' do
- it 'does not record an event' do
- expect { subject }.not_to change { abuse_report.events.count }
- end
- end
-
- shared_examples 'records an event' do |action:|
- it 'records the event', :aggregate_failures do
- expect { subject }.to change { abuse_report.events.count }.by(1)
-
- expect(abuse_report.events.last).to have_attributes(
- action: action,
- user: admin,
- reason: reason,
- comment: params[:comment]
- )
- end
-
- it 'returns the event success message' do
- expect(subject.message).to eq(abuse_report.events.last.success_message)
- end
- end
-
- context 'when invalid parameters are given' do
- describe 'invalid user' do
- describe 'when no user is given' do
- let_it_be(:admin) { nil }
-
- it_behaves_like 'returns an error response', 'Admin is required'
- end
-
- describe 'when given user is no admin' do
- let_it_be(:admin) { create(:user) }
-
- it_behaves_like 'returns an error response', 'Admin is required'
- end
- end
-
- describe 'invalid action' do
- describe 'when no action is given' do
- let(:action) { '' }
- let(:close) { 'false' }
-
- it_behaves_like 'returns an error response', 'Action is required'
- end
-
- describe 'when unknown action is given' do
- let(:action) { 'unknown' }
- let(:close) { 'false' }
-
- it_behaves_like 'returns an error response', 'Action is required'
- end
- end
-
- describe 'invalid reason' do
- let(:reason) { '' }
-
- it 'sets the reason to `other`' do
- subject
-
- expect(abuse_report.events.last).to have_attributes(reason: 'other')
- end
- end
- end
-
- describe 'when banning the user' do
- it 'calls the Users::BanService' do
- expect_next_instance_of(Users::BanService, admin) do |service|
- expect(service).to receive(:execute).with(abuse_report.user).and_return(status: :success)
- end
-
- subject
- end
-
- context 'when closing the report' do
- it_behaves_like 'closes the report'
- it_behaves_like 'records an event', action: 'ban_user_and_close_report'
- end
-
- context 'when not closing the report' do
- let(:close) { 'false' }
-
- it_behaves_like 'does not close the report'
- it_behaves_like 'records an event', action: 'ban_user'
- end
-
- context 'when banning the user fails' do
- before do
- allow_next_instance_of(Users::BanService, admin) do |service|
- allow(service).to receive(:execute).with(abuse_report.user)
- .and_return(status: :error, message: 'Banning the user failed')
- end
- end
-
- it_behaves_like 'returns an error response', 'Banning the user failed'
- it_behaves_like 'does not close the report'
- it_behaves_like 'does not record an event'
- end
- end
-
- describe 'when blocking the user' do
- let(:action) { 'block_user' }
-
- it 'calls the Users::BlockService' do
- expect_next_instance_of(Users::BlockService, admin) do |service|
- expect(service).to receive(:execute).with(abuse_report.user).and_return(status: :success)
- end
-
- subject
- end
-
- context 'when closing the report' do
- it_behaves_like 'closes the report'
- it_behaves_like 'records an event', action: 'block_user_and_close_report'
- end
-
- context 'when not closing the report' do
- let(:close) { 'false' }
-
- it_behaves_like 'does not close the report'
- it_behaves_like 'records an event', action: 'block_user'
- end
-
- context 'when blocking the user fails' do
- before do
- allow_next_instance_of(Users::BlockService, admin) do |service|
- allow(service).to receive(:execute).with(abuse_report.user)
- .and_return(status: :error, message: 'Blocking the user failed')
- end
- end
-
- it_behaves_like 'returns an error response', 'Blocking the user failed'
- it_behaves_like 'does not close the report'
- it_behaves_like 'does not record an event'
- end
- end
-
- describe 'when deleting the user' do
- let(:action) { 'delete_user' }
-
- it 'calls the delete_async method' do
- expect(abuse_report.user).to receive(:delete_async).with(deleted_by: admin)
- subject
- end
-
- context 'when closing the report' do
- it_behaves_like 'closes the report'
- it_behaves_like 'records an event', action: 'delete_user_and_close_report'
- end
-
- context 'when not closing the report' do
- let(:close) { 'false' }
-
- it_behaves_like 'does not close the report'
- it_behaves_like 'records an event', action: 'delete_user'
- end
- end
-
- describe 'when only closing the report' do
- let(:action) { '' }
-
- it_behaves_like 'closes the report'
- it_behaves_like 'records an event', action: 'close_report'
-
- context 'when report is already closed' do
- before do
- abuse_report.closed!
- end
-
- it_behaves_like 'returns an error response', 'Report already closed'
- it_behaves_like 'does not record an event'
- end
- end
- end
-end