mirror of
https://github.com/internetee/registry.git
synced 2025-06-08 13:44:47 +02:00
parent
b0ef967ff8
commit
1b22e17a94
3 changed files with 46 additions and 0 deletions
|
@ -8,6 +8,7 @@ class Nameserver < ActiveRecord::Base
|
||||||
validates :hostname, presence: true, format: { with: /\A(([a-zA-Z0-9]|[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9][a-zA-ZäöüõšžÄÖÜÕŠŽ0-9\-]*[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\z/ }
|
validates :hostname, presence: true, format: { with: /\A(([a-zA-Z0-9]|[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9][a-zA-ZäöüõšžÄÖÜÕŠŽ0-9\-]*[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\z/ }
|
||||||
validate :val_ipv4
|
validate :val_ipv4
|
||||||
validate :val_ipv6
|
validate :val_ipv6
|
||||||
|
validate :require_ip, if: :glue_record_required?
|
||||||
# rubocop: enable Metrics/LineLength
|
# rubocop: enable Metrics/LineLength
|
||||||
|
|
||||||
before_validation :normalize_attributes
|
before_validation :normalize_attributes
|
||||||
|
@ -86,4 +87,15 @@ class Nameserver < ActiveRecord::Base
|
||||||
pluck(:hostname)
|
pluck(:hostname)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def require_ip
|
||||||
|
errors.add(:base, :ip_required) if ipv4.blank? && ipv6.blank?
|
||||||
|
end
|
||||||
|
|
||||||
|
def glue_record_required?
|
||||||
|
return unless hostname? && domain
|
||||||
|
hostname.end_with?(domain.name)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
8
config/locales/nameservers.en.yml
Normal file
8
config/locales/nameservers.en.yml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
en:
|
||||||
|
activemodel:
|
||||||
|
errors:
|
||||||
|
models:
|
||||||
|
nameserver:
|
||||||
|
attributes:
|
||||||
|
base:
|
||||||
|
ip_required: At least one IPv4 or IPv6 is required
|
26
test/models/nameserver/glue_record_test.rb
Normal file
26
test/models/nameserver/glue_record_test.rb
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class NameserverGlueRecordTest < ActiveSupport::TestCase
|
||||||
|
def setup
|
||||||
|
@nameserver = nameservers(:ns1)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_invalid_without_ip_if_glue_record_is_required
|
||||||
|
@nameserver.hostname = 'ns1.shop.test'
|
||||||
|
@nameserver.ipv4 = @nameserver.ipv6 = ''
|
||||||
|
assert @nameserver.invalid?
|
||||||
|
assert @nameserver.errors.added?(:base, :ip_required)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_valid_with_ip_if_glue_record_is_required
|
||||||
|
@nameserver.hostname = 'ns1.shop.test'
|
||||||
|
@nameserver.ipv4 = ['192.0.2.1']
|
||||||
|
@nameserver.ipv6 = ''
|
||||||
|
assert @nameserver.valid?
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_valid_without_ip_if_glue_record_is_not_required
|
||||||
|
@nameserver.ipv4 = @nameserver.ipv6 = ''
|
||||||
|
assert @nameserver.valid?
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue