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
path: root/spec
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2016-01-20 22:24:20 +0300
committerRobert Speicher <rspeicher@gmail.com>2016-01-20 22:24:20 +0300
commit1553c560e0d02e670b7cec2b443545e67418b569 (patch)
tree81c4fbabbd376d80db86a09d39f79ea35abee068 /spec
parenta8a65afe1e953ce3a9fc151f9e033b99fc568fad (diff)
parent8536e083f7b2d7ed77ecae83774d75f68d66e0b4 (diff)
Merge branch 'feature/check-against-rbl-only' into 'master'
Split from !2455 References #9092 See merge request !2515
Diffstat (limited to 'spec')
-rw-r--r--spec/lib/dnsxl_check_spec.rb68
1 files changed, 68 insertions, 0 deletions
diff --git a/spec/lib/dnsxl_check_spec.rb b/spec/lib/dnsxl_check_spec.rb
new file mode 100644
index 00000000000..a35a1be0c90
--- /dev/null
+++ b/spec/lib/dnsxl_check_spec.rb
@@ -0,0 +1,68 @@
+require 'spec_helper'
+require 'ostruct'
+
+describe 'DNSXLCheck', lib: true, no_db: true do
+ let(:spam_ip) { '127.0.0.2' }
+ let(:no_spam_ip) { '127.0.0.3' }
+ let(:invalid_ip) { 'a.b.c.d' }
+ let!(:dnsxl_check) { DNSXLCheck.create_from_list([OpenStruct.new({ domain: 'test', weight: 1 })]) }
+
+ before(:context) do
+ class DNSXLCheck::Resolver
+ class << self
+ alias_method :old_search, :search
+ def search(query)
+ return false if query.match(/always\.failing\.domain\z/)
+ return true if query.match(/\A2\.0\.0\.127\./)
+ return false if query.match(/\A3\.0\.0\.127\./)
+ end
+ end
+ end
+ end
+
+ describe '#test' do
+ before do
+ dnsxl_check.threshold = 0.75
+ dnsxl_check.add_list('always.failing.domain', 1)
+ end
+
+ context 'when threshold is used' do
+ before { dnsxl_check.use_threshold= true }
+
+ it { expect(dnsxl_check.test(spam_ip)).to be_falsey }
+ end
+
+ context 'when threshold is not used' do
+ before { dnsxl_check.use_threshold= false }
+
+ it { expect(dnsxl_check.test(spam_ip)).to be_truthy }
+ end
+ end
+
+ describe '#test_with_threshold' do
+ it { expect{ dnsxl_check.test_with_threshold(invalid_ip) }.to raise_error(ArgumentError) }
+
+ it { expect(dnsxl_check.test_with_threshold(spam_ip)).to be_truthy }
+ it { expect(dnsxl_check.test_with_threshold(no_spam_ip)).to be_falsey }
+ end
+
+ describe '#test_strict' do
+ before do
+ dnsxl_check.threshold = 1
+ dnsxl_check.add_list('always.failing.domain', 1)
+ end
+
+ it { expect{ dnsxl_check.test_strict(invalid_ip) }.to raise_error(ArgumentError) }
+
+ it { expect(dnsxl_check.test_with_threshold(spam_ip)).to be_falsey }
+ it { expect(dnsxl_check.test_with_threshold(no_spam_ip)).to be_falsey }
+ it { expect(dnsxl_check.test_strict(spam_ip)).to be_truthy }
+ it { expect(dnsxl_check.test_strict(no_spam_ip)).to be_falsey }
+ end
+
+ describe '#threshold=' do
+ it { expect{ dnsxl_check.threshold = 0 }.to raise_error(ArgumentError) }
+ it { expect{ dnsxl_check.threshold = 1.1 }.to raise_error(ArgumentError) }
+ it { expect{ dnsxl_check.threshold = 0.5 }.not_to raise_error }
+ end
+end