From 55de10a53de6fd8d73cf92d12c74531bbb99c6b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Thu, 13 Aug 2020 16:59:35 +0300 Subject: [PATCH] Ensure that Whois record is updated/destroyed when actions performed on Zone objects --- app/jobs/update_whois_record_job.rb | 1 + app/models/concerns/zone/whois_queryable.rb | 2 +- test/fixtures/dns/zones.yml | 9 ++++++++ test/models/dns/zone_test.rb | 25 +++++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/jobs/update_whois_record_job.rb b/app/jobs/update_whois_record_job.rb index 4d81a58cf..2973d5a6b 100644 --- a/app/jobs/update_whois_record_job.rb +++ b/app/jobs/update_whois_record_job.rb @@ -75,6 +75,7 @@ class UpdateWhoisRecordJob < Que::Job def delete_zone(name) WhoisRecord.where(name: name).destroy_all + Whois::Record.where(name: name).destroy_all end def remove_status_from_whois(domain_name:, domain_status:) diff --git a/app/models/concerns/zone/whois_queryable.rb b/app/models/concerns/zone/whois_queryable.rb index 1a24dea54..970ce87d6 100644 --- a/app/models/concerns/zone/whois_queryable.rb +++ b/app/models/concerns/zone/whois_queryable.rb @@ -5,7 +5,7 @@ module Concerns included do after_save :update_whois_record, if: :subzone? - after_destroy :update_whois_record, if: :subzone? + after_destroy :update_whois_record end def subzone? diff --git a/test/fixtures/dns/zones.yml b/test/fixtures/dns/zones.yml index 4f493a149..a1be9a74b 100644 --- a/test/fixtures/dns/zones.yml +++ b/test/fixtures/dns/zones.yml @@ -9,3 +9,12 @@ one: minimum_ttl: 1 email: admin@registry.test master_nameserver: ns.test +subzone: + origin: 'sub.zone' + ttl: 1 + refresh: 1 + retry: 1 + expire: 1 + minimum_ttl: 1 + email: admin@registry.test + master_nameserver: ns.test diff --git a/test/models/dns/zone_test.rb b/test/models/dns/zone_test.rb index c18f9592a..a6d14d3e9 100644 --- a/test/models/dns/zone_test.rb +++ b/test/models/dns/zone_test.rb @@ -124,6 +124,31 @@ class DNS::ZoneTest < ActiveSupport::TestCase assert zone.invalid? end + def test_determines_if_subzone + zone = valid_zone + zone.update(origin: 'pri.ee') + assert zone.subzone? + end + + def test_updates_whois_after_update + subzone = dns_zones(:subzone) + assert_nil Whois::Record.find_by(name: subzone.origin) + + subzone.update(expire: 42) + + whois_record = Whois::Record.find_by(name: subzone.origin) + assert whois_record.present? + end + + def test_deletes_whois_record_after_destroy + subzone = dns_zones(:subzone) + subzone.update(expire: 42) + assert Whois::Record.find_by(name: subzone.origin).present? + + subzone.destroy + assert_nil Whois::Record.find_by(name: subzone.origin) + end + private def valid_zone