2018-06-05 15:24:44 +02:00
|
|
|
require "test_helper"
|
|
|
|
|
2018-07-02 14:25:35 +02:00
|
|
|
class CheckDummyProcessor
|
|
|
|
include CheckProcessor
|
|
|
|
def scope
|
|
|
|
base_scope
|
2018-06-05 15:24:44 +02:00
|
|
|
end
|
|
|
|
|
2018-07-02 14:25:35 +02:00
|
|
|
def configuration_key
|
|
|
|
"checks_dummy"
|
2018-06-05 15:24:44 +02:00
|
|
|
end
|
|
|
|
|
2018-07-02 14:25:35 +02:00
|
|
|
def resolvers
|
|
|
|
%i[
|
|
|
|
resolve_expire_short_term
|
|
|
|
resolve_expire_long_term
|
|
|
|
]
|
|
|
|
end
|
|
|
|
end
|
2018-06-05 15:24:44 +02:00
|
|
|
|
2018-07-02 14:25:35 +02:00
|
|
|
class CheckProcessorTest < ActiveSupport::TestCase
|
|
|
|
setup do
|
|
|
|
@processor = CheckDummyProcessor.new
|
2018-06-05 15:24:44 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
test "resolve_last_run_failed includes already and never succeeded" do
|
|
|
|
c1 = create(:check, :last_runs_failed)
|
|
|
|
c2 = create(:check, :last_run_succeed)
|
|
|
|
c3 = create(:check, last_run_at: 4.days.ago, last_success_at: nil)
|
|
|
|
|
|
|
|
checks = @processor.resolve_last_run_failed
|
|
|
|
|
|
|
|
assert_includes checks, c1
|
|
|
|
assert_not_includes checks, c2
|
|
|
|
assert_includes checks, c3
|
|
|
|
end
|
|
|
|
|
|
|
|
test "resolve_unknown_expiry" do
|
|
|
|
c1 = create(:check, :nil_dates)
|
|
|
|
c2 = create(:check)
|
|
|
|
|
|
|
|
checks = @processor.resolve_unknown_expiry
|
|
|
|
|
|
|
|
assert_includes checks, c1
|
|
|
|
assert_not_includes checks, c2
|
|
|
|
end
|
|
|
|
|
|
|
|
test "resolve_expire_short_term" do
|
|
|
|
c1 = create(:check, :expires_next_week)
|
|
|
|
c2 = create(:check, :expires_next_year)
|
|
|
|
|
|
|
|
checks = @processor.resolve_expire_short_term
|
|
|
|
|
|
|
|
assert_includes checks, c1
|
|
|
|
assert_not_includes checks, c2
|
|
|
|
end
|
|
|
|
|
|
|
|
test "resolve_expire_long_term returns checks with respect of frequency" do
|
|
|
|
c1 = create(:check, domain_expires_at: 380.days.from_now)
|
|
|
|
c2 = create(:check, domain_expires_at: 390.days.from_now)
|
|
|
|
c3 = create(:check, domain_expires_at: 391.days.from_now)
|
|
|
|
c4 = create(:check, domain_expires_at: 20.days.from_now)
|
|
|
|
|
|
|
|
checks = @processor.resolve_expire_long_term
|
|
|
|
|
|
|
|
assert_includes checks, c1
|
|
|
|
assert_includes checks, c2
|
|
|
|
assert_not_includes checks, c3
|
|
|
|
assert_not_includes checks, c4
|
|
|
|
end
|
|
|
|
|
2018-07-02 17:21:08 +02:00
|
|
|
test "resolve_all include all eligible checks" do
|
|
|
|
create(:check, :expires_next_week)
|
|
|
|
create(:check, :expires_next_week, last_run_at: 4.hours.ago)
|
|
|
|
create(:check, :last_runs_failed)
|
|
|
|
|
|
|
|
assert_equal @processor.send(:scope), @processor.resolve_all
|
|
|
|
end
|
|
|
|
|
2018-06-05 15:24:44 +02:00
|
|
|
test "resolvers does not include checks recently executed" do
|
|
|
|
c1 = create(:check, :expires_next_week)
|
|
|
|
c2 = create(:check, :expires_next_week, last_run_at: 4.hours.ago)
|
|
|
|
|
|
|
|
checks = @processor.resolve_expire_short_term
|
|
|
|
|
|
|
|
assert_includes checks, c1
|
|
|
|
assert_not_includes checks, c2
|
|
|
|
end
|
|
|
|
|
|
|
|
test "resolvers include checks never executed" do
|
|
|
|
c1 = create(:check, :expires_next_week, last_run_at: 4.days.ago)
|
|
|
|
|
|
|
|
checks = @processor.resolve_expire_short_term
|
|
|
|
|
|
|
|
assert_includes checks, c1
|
|
|
|
end
|
|
|
|
|
|
|
|
test "resolvers does not include inactive checks" do
|
|
|
|
c1 = create(:check, :expires_next_week)
|
|
|
|
c2 = create(:check, :expires_next_week, :inactive)
|
|
|
|
|
|
|
|
checks = @processor.resolve_expire_short_term
|
|
|
|
|
|
|
|
assert_includes checks, c1
|
|
|
|
assert_not_includes checks, c2
|
|
|
|
end
|
|
|
|
|
|
|
|
test "#sync_dates respects the interval configuration between sends" do
|
|
|
|
create_list(:check, 3, :expires_next_week)
|
|
|
|
|
|
|
|
configuration = Minitest::Mock.new
|
|
|
|
2.times do configuration.expect(:long_term, 60) end
|
|
|
|
configuration.expect(:long_term_frequency, 10)
|
|
|
|
|
|
|
|
3.times do
|
|
|
|
configuration.expect(:interval, 0.000001)
|
|
|
|
end
|
|
|
|
|
2018-07-02 14:25:35 +02:00
|
|
|
processor = CheckDummyProcessor.new(configuration)
|
2018-06-05 15:24:44 +02:00
|
|
|
|
|
|
|
mock = Minitest::Mock.new
|
|
|
|
assert_stub = lambda { |actual_time|
|
|
|
|
assert_equal 0.000001, actual_time
|
|
|
|
mock
|
|
|
|
}
|
|
|
|
|
|
|
|
processor.stub :process, nil do
|
|
|
|
processor.stub :sleep, assert_stub do
|
|
|
|
processor.sync_dates
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
configuration.verify
|
|
|
|
mock.verify
|
|
|
|
end
|
|
|
|
end
|