mirror of
https://github.com/internetee/registry.git
synced 2025-07-25 12:08:27 +02:00
addede test for dnssec validator
This commit is contained in:
parent
f6b352a087
commit
aba8c1fb17
2 changed files with 64 additions and 31 deletions
|
@ -63,6 +63,7 @@ class ValidateDnssecJob < ApplicationJob
|
||||||
logger.info "-----------"
|
logger.info "-----------"
|
||||||
|
|
||||||
response_container = parse_response(answer)
|
response_container = parse_response(answer)
|
||||||
|
|
||||||
compare_dnssec_data(response_container: response_container, domain: domain)
|
compare_dnssec_data(response_container: response_container, domain: domain)
|
||||||
rescue Exception => e
|
rescue Exception => e
|
||||||
logger.error "#{e.message} - domain name: #{domain.name} - hostname: #{hostname}"
|
logger.error "#{e.message} - domain name: #{domain.name} - hostname: #{hostname}"
|
||||||
|
@ -76,6 +77,7 @@ class ValidateDnssecJob < ApplicationJob
|
||||||
|
|
||||||
flag = make_magic(response_container: response_container, dnskey: key)
|
flag = make_magic(response_container: response_container, dnskey: key)
|
||||||
text = "#{key.flags} - #{key.protocol} - #{key.alg} - #{key.public_key}"
|
text = "#{key.flags} - #{key.protocol} - #{key.alg} - #{key.public_key}"
|
||||||
|
|
||||||
if flag
|
if flag
|
||||||
key.validation_datetime = Time.zone.now
|
key.validation_datetime = Time.zone.now
|
||||||
key.save
|
key.save
|
||||||
|
@ -98,7 +100,9 @@ class ValidateDnssecJob < ApplicationJob
|
||||||
|
|
||||||
def parse_response(answer)
|
def parse_response(answer)
|
||||||
response_container = []
|
response_container = []
|
||||||
|
|
||||||
answer.each_answer do |a|
|
answer.each_answer do |a|
|
||||||
|
|
||||||
a_string = a.to_s
|
a_string = a.to_s
|
||||||
a_string = a_string.gsub /\t/, ' '
|
a_string = a_string.gsub /\t/, ' '
|
||||||
a_string = a_string.split(' ')
|
a_string = a_string.split(' ')
|
||||||
|
|
|
@ -1,42 +1,71 @@
|
||||||
$VERBOSE=nil
|
|
||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
|
class ZoneAnswer
|
||||||
|
def initialize(valid_response: true)
|
||||||
|
@answer = []
|
||||||
|
|
||||||
|
algorithm = OpenStruct.new(code: 13)
|
||||||
|
|
||||||
|
answer = OpenStruct.new
|
||||||
|
answer.data = "some0 some1 some2 257 some4 some5 some6 mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ== some"
|
||||||
|
answer.flags = 257
|
||||||
|
answer.protocol = 3
|
||||||
|
answer.protocol = 7 unless valid_response
|
||||||
|
answer.algorithm = algorithm
|
||||||
|
|
||||||
|
@answer << answer
|
||||||
|
end
|
||||||
|
|
||||||
|
def each_answer
|
||||||
|
@answer.each {|rec|
|
||||||
|
yield rec
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class ValidateDnssecJobTest < ActiveJob::TestCase
|
class ValidateDnssecJobTest < ActiveJob::TestCase
|
||||||
setup do
|
setup do
|
||||||
@domain = domains(:shop)
|
@domain = domains(:shop)
|
||||||
@dnskey = dnskeys(:one)
|
@dnskey = dnskeys(:one)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_job_should_return_successfully_validated_dnskeys
|
def test_job_should_set_validation_datetime_if_validation_is_valid
|
||||||
# @domain.dnskeys << @dnskey
|
@domain.nameservers.each do |n|
|
||||||
# @domain.save
|
n.update(validation_datetime: Time.zone.now - 1.minute)
|
||||||
# @domain.reload
|
end
|
||||||
#
|
@domain.dnskeys << @dnskey
|
||||||
# mock_zone_data = [
|
@domain.save
|
||||||
# {
|
|
||||||
# flags: @dnskey.flags,
|
@domain.reload
|
||||||
# protocol: @dnskey.protocol,
|
|
||||||
# alg: @dnskey.alg,
|
mock_zone_data = ZoneAnswer.new
|
||||||
# public_key: @dnskey.public_key
|
|
||||||
# }]
|
Spy.on_instance_method(ValidateDnssecJob, :prepare_validator).and_return(Dnsruby::Resolver.new)
|
||||||
#
|
Spy.on_instance_method(Dnsruby::Resolver, :query).and_return(mock_zone_data)
|
||||||
# resolver = Spy.mock(Dnsruby::Recursor)
|
|
||||||
# Spy.on(resolver, :query).and_return true
|
ValidateDnssecJob.perform_now(domain_name: @domain.name)
|
||||||
# Spy.on_instance_method(ValidateDnssecJob, :parse_response).and_return(mock_zone_data)
|
|
||||||
# # Spy.on_instance_method(ValidateDnssecJob, :prepare_validator).and_return(true)
|
@domain.reload
|
||||||
#
|
assert_not_nil @domain.dnskeys.first.validation_datetime
|
||||||
#
|
|
||||||
# ValidateDnssecJob.perform_now(domain_name: @domain.name)
|
|
||||||
#
|
|
||||||
# @domain.reload
|
|
||||||
# p @domain.dnskeys
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# def test_job_discarded_after_error
|
def test_job_should_not_set_validation_datetime_if_validation_is_invalid
|
||||||
# assert_no_enqueued_jobs
|
@domain.nameservers.each do |n|
|
||||||
# assert_performed_jobs 1 do
|
n.update(validation_datetime: Time.zone.now - 1.minute)
|
||||||
# TestDiscardedJob.perform_later
|
end
|
||||||
# end
|
@domain.dnskeys << @dnskey
|
||||||
# assert_no_enqueued_jobs
|
@domain.save
|
||||||
# end
|
|
||||||
|
@domain.reload
|
||||||
|
|
||||||
|
mock_zone_data = ZoneAnswer.new(valid_response: false)
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
@domain.reload
|
||||||
|
assert_nil @domain.dnskeys.first.validation_datetime
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue