Merge pull request #2811 from internetee/update_test_coverage/validate_dnssec_job

Added extra test coverage for validate_dnssec_job
This commit is contained in:
Timo Võhmar 2025-07-29 16:02:47 +03:00 committed by GitHub
commit efaf363bb6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -68,4 +68,92 @@ class ValidateDnssecJobTest < ActiveJob::TestCase
@domain.reload
assert_nil @domain.dnskeys.first.validation_datetime
end
def test_prepare_validator_configures_dnsruby_resolver_with_correct_parameters
job = ValidateDnssecJob.new
original_timeout = ENV['nameserver_validation_timeout']
# Timout set for current test - in given time DNSSEC validation should be finished
ENV['nameserver_validation_timeout'] = '4'
resolver = job.send(:prepare_validator, "8.8.8.8")
assert_instance_of Dnsruby::Resolver, resolver
assert resolver.do_validation
assert resolver.dnssec
assert_equal 4, resolver.packet_timeout
assert_equal 4, resolver.query_timeout
ENV['nameserver_validation_timeout'] = original_timeout
end
def test_perform_skips_validation_if_no_nameservers_present
domain = Domain.create!(
name: "test.test",
registrar: registrars(:bestnames),
registrant: @domain.registrant,
period: 1,
period_unit: 'y',
valid_to: 1.year.from_now
)
dnskey = @dnskey
domain.dnskeys << dnskey
original_validation_time = dnskey.validation_datetime
ValidateDnssecJob.new.perform(domain_name: domain.name)
dnskey.reload
assert_equal dnskey.validation_datetime, dnskey.validation_datetime, "Expected DNSKEY validation_datetime to be set after successful validation"
end
def test_perform_updates_dnskey_validation_if_nameservers_present
domain = Domain.create!(
name: "test.test",
registrar: registrars(:bestnames),
registrant: @domain.registrant,
period: 1,
period_unit: 'y',
valid_to: 1.year.from_now
)
dnskey = @dnskey
domain.dnskeys << dnskey
nameserver = domain.nameservers.create!(
hostname: 'ns1.test.test',
ipv4: ['192.0.2.1']
)
nameserver.update(validation_datetime: Time.zone.now - 1.minute)
mock_zone_data = ZoneAnswer.new
Spy.on_instance_method(ValidateDnssecJob, :prepare_validator).and_return(Dnsruby::Resolver.new)
Spy.on_instance_method(Dnsruby::Resolver, :query).and_return(mock_zone_data)
ValidateDnssecJob.perform_now(domain_name: domain.name)
dnskey.reload
assert_not_nil dnskey.validation_datetime, "Expected DNSKEY validation_datetime to be set after successful validation"
end
def perform_without_domain_name_executes_else_block
domain = domains(:shop)
domain.dnskeys << @dnskey unless domain.dnskeys.any?
# Add nameserver if not present
unless domain.nameservers.any?
domain.nameservers.create!(
hostname: "ns.#{domain.name}",
ipv4: ["192.0.2.1"],
validation_datetime: Time.zone.now
)
end
ValidateDnssecJob.perform_now
end
end