internetee-registry/test/jobs/csync_job_test.rb
Karl Erik Õunapuu 88e1bc3727 parent 64e3bc885a2cb8b46a1aaa4bf4f121ee7f5d44a6
author Karl Erik Õunapuu <karlerik@kreative.ee> 1591359032 +0300
committer Alex Sherman <yul.golem@gmail.com> 1617029320 +0500

CsyncJob: Don't respect IPv6 if nessecary
2021-03-30 14:22:45 +05:00

73 lines
2.1 KiB
Ruby

require 'test_helper'
class CsyncJobTest < ActiveSupport::TestCase
include ActionMailer::TestHelper
setup do
@dnskey = dnskeys(:one)
@domain = domains(:shop)
end
def test_generates_input_file_for_cdnskey_scanner
@dnskey.update(domain: domains(:shop))
expected_contents = "[secure]\nns1.bestnames.test shop.test\nns2.bestnames.test shop.test\n" \
"[insecure]\nns1.bestnames.test airport.test metro.test\nns2.bestnames.test airport.test\n"
CsyncJob.run(generate: true)
assert_equal expected_contents, IO.read(ENV['cdns_scanner_input_file'])
end
def test_creates_csync_record_when_new_cdnskey_discovered
assert_nil @domain.csync_record
CsyncJob.run
@domain.reload
assert @domain.csync_record
csync_record = @domain.csync_record
assert_equal 1, csync_record.times_scanned
assert_equal '257 3 13 mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==', csync_record.cdnskey
assert_not @domain.dnskeys.any?
end
def test_creates_dnskey_after_required_cycles
assert_equal 0, @domain.dnskeys.count
assert_nil @domain.csync_record
CsyncJob.run # Creates initial CsyncRecord for domain
@domain.reload
assert @domain.csync_record.present?
@domain.csync_record.update(times_scanned: 2) # 3rd time trigger DNSKEY push
assert_equal 0, @domain.dnskeys.count
assert_equal 2, @domain.csync_record.times_scanned
CsyncRecord.stub :by_domain_name, @domain.csync_record do
@domain.csync_record.stub :dnssec_validates?, true do
CsyncJob.run
end
end
@domain.reload
assert_equal 1, @domain.dnskeys.count
assert_equal 'mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==', @domain.dnskeys.last.public_key
assert_nil @domain.csync_record
end
def test_sends_mail_to_contacts_if_dnskey_updated
assert_emails 1 do
CsyncJob.run
@domain.reload
CsyncRecord.stub :by_domain_name, @domain.csync_record do
@domain.csync_record.stub :dnssec_validates?, true do
2.times do
CsyncJob.run
end
end
end
end
end
end