internetee-registry/test/models/dns/zone_test.rb
2021-04-12 17:22:35 +05:00

194 lines
4.2 KiB
Ruby

require 'test_helper'
class DNS::ZoneTest < ActiveJob::TestCase
def test_valid_zone_fixture_is_valid
assert valid_zone.valid?, proc { valid_zone.errors.full_messages }
end
def test_invalid_without_origin
zone = valid_zone
zone.origin = ''
assert zone.invalid?
end
def test_invalid_when_origin_is_already_taken
zone = valid_zone
another_zone = zone.dup
assert another_zone.invalid?
end
def test_invalid_without_ttl
zone = valid_zone
zone.ttl = ''
assert zone.invalid?
end
def test_validates_ttl_format
zone = valid_zone
zone.ttl = 'text'
assert zone.invalid?
zone.ttl = '1.1'
assert zone.invalid?
zone.ttl = '1'
assert zone.valid?
end
def test_invalid_without_refresh
zone = valid_zone
zone.refresh = ''
assert zone.invalid?
end
def test_validates_refresh_format
zone = valid_zone
zone.refresh = 'text'
assert zone.invalid?
zone.refresh = '1.1'
assert zone.invalid?
zone.refresh = '1'
assert zone.valid?
end
def test_invalid_without_retry
zone = valid_zone
zone.retry = ''
assert zone.invalid?
end
def test_validates_retry_format
zone = valid_zone
zone.retry = 'text'
assert zone.invalid?
zone.retry = '1.1'
assert zone.invalid?
zone.retry = '1'
assert zone.valid?
end
def test_invalid_without_expire
zone = valid_zone
zone.expire = ''
assert zone.invalid?
end
def test_validates_expire_format
zone = valid_zone
zone.expire = 'text'
assert zone.invalid?
zone.expire = '1.1'
assert zone.invalid?
zone.expire = '1'
assert zone.valid?
end
def test_invalid_without_minimum_ttl
zone = valid_zone
zone.minimum_ttl = ''
assert zone.invalid?
end
def test_validates_minimum_ttl_format
zone = valid_zone
zone.minimum_ttl = 'text'
assert zone.invalid?
zone.minimum_ttl = '1.1'
assert zone.invalid?
zone.minimum_ttl = '1'
assert zone.valid?
end
def test_invalid_without_email
zone = valid_zone
zone.email = ''
assert zone.invalid?
end
def test_invalid_without_master_nameserver
zone = valid_zone
zone.master_nameserver = ''
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(:one).dup
subzone.origin = 'sub.zone'
perform_enqueued_jobs do
subzone.save
end
whois_record = Whois::Record.find_by(name: subzone.origin)
assert whois_record.present?
end
def test_has_setting_info_as_contacts_for_subzones
subzone = dns_zones(:one).dup
subzone.origin = 'sub.zone'
perform_enqueued_jobs do
subzone.save
end
whois_record = Whois::Record.find_by(name: subzone.origin)
assert whois_record.present?
assert_equal Setting.registry_whois_disclaimer, whois_record.json['disclaimer']
assert_equal Setting.registry_email, whois_record.json['email']
assert_equal Setting.registry_juridical_name, whois_record.json['registrar']
assert_equal Setting.registry_url, whois_record.json['registrar_website']
assert_equal Setting.registry_phone, whois_record.json['registrar_phone']
assert_equal Setting.registry_juridical_name, whois_record.json['registrant']
assert_equal Setting.registry_reg_no, whois_record.json['registrant_reg_no']
assert_equal Setting.registry_country_code, whois_record.json['registrant_ident_country_code']
contact = { name: Setting.registry_invoice_contact, email: Setting.registry_email,
disclosed_attributes: %w[name email] }.with_indifferent_access
assert_equal contact, whois_record.json['admin_contacts'][0]
assert_equal contact, whois_record.json['tech_contacts'][0]
end
def test_deletes_whois_record_after_destroy
subzone = dns_zones(:one).dup
subzone.origin = 'sub.zone'
perform_enqueued_jobs do
subzone.save
end
assert Whois::Record.find_by(name: subzone.origin).present?
perform_enqueued_jobs do
subzone.destroy
end
assert_nil Whois::Record.find_by(name: subzone.origin)
end
private
def valid_zone
dns_zones(:one)
end
end