mirror of
https://github.com/internetee/registry.git
synced 2025-06-07 13:15:40 +02:00
194 lines
4.2 KiB
Ruby
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
|