mirror of
https://github.com/Evolix/chexpire.git
synced 2024-06-29 12:32:53 +02:00
134 lines
3.5 KiB
Ruby
134 lines
3.5 KiB
Ruby
require "test_helper"
|
|
|
|
class CheckProcessorTest < ActiveSupport::TestCase
|
|
setup do
|
|
@processor = CheckProcessor.new
|
|
end
|
|
|
|
test "process WhoisSyncJob for domain checks" do
|
|
domain = "domain.fr"
|
|
check = create(:check, :domain, :nil_dates, domain: domain)
|
|
|
|
mock_system_command("whois", domain, stdout: file_fixture("whois/domain.fr.txt").read) do
|
|
@processor.send(:process, check)
|
|
end
|
|
|
|
check.reload
|
|
|
|
assert_equal Time.new(2019, 2, 17, 0, 0, 0, 0), check.domain_expires_at
|
|
end
|
|
|
|
test "raises an error for an unsupported check kind" do
|
|
check = build(:check)
|
|
|
|
check.stub :kind, :unknown do
|
|
assert_raises ArgumentError do
|
|
@processor.send(:process, check)
|
|
end
|
|
end
|
|
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
|
|
|
|
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
|
|
|
|
processor = CheckProcessor.new(configuration)
|
|
|
|
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
|