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/spam/spam_verdict_service_spec.rb')
-rw-r--r--spec/services/spam/spam_verdict_service_spec.rb78
1 files changed, 64 insertions, 14 deletions
diff --git a/spec/services/spam/spam_verdict_service_spec.rb b/spec/services/spam/spam_verdict_service_spec.rb
index 082b8f909f9..b89c96129c2 100644
--- a/spec/services/spam/spam_verdict_service_spec.rb
+++ b/spec/services/spam/spam_verdict_service_spec.rb
@@ -17,9 +17,10 @@ RSpec.describe Spam::SpamVerdictService do
let(:check_for_spam) { true }
let_it_be(:user) { create(:user) }
let_it_be(:issue) { create(:issue, author: user) }
+ let_it_be(:snippet) { create(:personal_snippet, :public, author: user) }
let(:service) do
- described_class.new(user: user, target: issue, options: {})
+ described_class.new(user: user, target: target, options: {})
end
let(:attribs) do
@@ -31,7 +32,7 @@ RSpec.describe Spam::SpamVerdictService do
stub_feature_flags(allow_possible_spam: false)
end
- describe '#execute' do
+ shared_examples 'execute spam verdict service' do
subject { service.execute }
before do
@@ -172,7 +173,8 @@ RSpec.describe Spam::SpamVerdictService do
end
end
- describe '#akismet_verdict' do
+ shared_examples 'akismet verdict' do
+ let(:target) { issue }
subject { service.send(:akismet_verdict) }
context 'if Akismet is enabled' do
@@ -227,7 +229,7 @@ RSpec.describe Spam::SpamVerdictService do
end
end
- describe '#spamcheck_verdict' do
+ shared_examples 'spamcheck verdict' do
subject { service.send(:spamcheck_verdict) }
context 'if a Spam Check endpoint enabled and set to a URL' do
@@ -254,7 +256,7 @@ RSpec.describe Spam::SpamVerdictService do
before do
allow(service).to receive(:spamcheck_client).and_return(spam_client)
- allow(spam_client).to receive(:issue_spam?).and_return([verdict, attribs, error])
+ allow(spam_client).to receive(:spam?).and_return([verdict, attribs, error])
end
context 'if the result is a NOOP verdict' do
@@ -365,10 +367,13 @@ RSpec.describe Spam::SpamVerdictService do
let(:attribs) { nil }
before do
- allow(spam_client).to receive(:issue_spam?).and_raise(GRPC::Aborted)
+ allow(spam_client).to receive(:spam?).and_raise(GRPC::Aborted)
end
it 'returns nil' do
+ expect(Gitlab::ErrorTracking).to receive(:log_exception).with(
+ an_instance_of(GRPC::Aborted), error: ::Spam::SpamConstants::ERROR_TYPE
+ )
expect(subject).to eq([ALLOW, attribs, true])
end
end
@@ -381,17 +386,20 @@ RSpec.describe Spam::SpamVerdictService do
expect(subject).to eq [DISALLOW, attribs]
end
end
- end
- context 'if the endpoint times out' do
- let(:attribs) { nil }
+ context 'if the endpoint times out' do
+ let(:attribs) { nil }
- before do
- allow(spam_client).to receive(:issue_spam?).and_raise(GRPC::DeadlineExceeded)
- end
+ before do
+ allow(spam_client).to receive(:spam?).and_raise(GRPC::DeadlineExceeded)
+ end
- it 'returns nil' do
- expect(subject).to eq([ALLOW, attribs, true])
+ it 'returns nil' do
+ expect(Gitlab::ErrorTracking).to receive(:log_exception).with(
+ an_instance_of(GRPC::DeadlineExceeded), error: ::Spam::SpamConstants::ERROR_TYPE
+ )
+ expect(subject).to eq([ALLOW, attribs, true])
+ end
end
end
end
@@ -416,4 +424,46 @@ RSpec.describe Spam::SpamVerdictService do
end
end
end
+
+ describe '#execute' do
+ describe 'issue' do
+ let(:target) { issue }
+
+ it_behaves_like 'execute spam verdict service'
+ end
+
+ describe 'snippet' do
+ let(:target) { snippet }
+
+ it_behaves_like 'execute spam verdict service'
+ end
+ end
+
+ describe '#akismet_verdict' do
+ describe 'issue' do
+ let(:target) { issue }
+
+ it_behaves_like 'akismet verdict'
+ end
+
+ describe 'snippet' do
+ let(:target) { snippet }
+
+ it_behaves_like 'akismet verdict'
+ end
+ end
+
+ describe '#spamcheck_verdict' do
+ describe 'issue' do
+ let(:target) { issue }
+
+ it_behaves_like 'spamcheck verdict'
+ end
+
+ describe 'snippet' do
+ let(:target) { snippet }
+
+ it_behaves_like 'spamcheck verdict'
+ end
+ end
end