mirror of
https://github.com/internetee/registry.git
synced 2025-06-08 05:34:46 +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/ }
|
||||
validate :val_ipv4
|
||||
validate :val_ipv6
|
||||
validate :require_ip, if: :glue_record_required?
|
||||
# rubocop: enable Metrics/LineLength
|
||||
|
||||
before_validation :normalize_attributes
|
||||
|
@ -86,4 +87,15 @@ class Nameserver < ActiveRecord::Base
|
|||
pluck(:hostname)
|
||||
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
|
||||
|
|
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