From 80327d34471adeede62f339964248e7c7a0200c0 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 30 Jan 2018 01:37:31 +0200 Subject: [PATCH] Require attribute #660 --- app/models/nameserver.rb | 4 +++- ...0180129233223_change_nameservers_hostname_to_not_null.rb | 5 +++++ db/structure.sql | 4 +++- test/models/nameserver_test.rb | 6 ++++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20180129233223_change_nameservers_hostname_to_not_null.rb diff --git a/app/models/nameserver.rb b/app/models/nameserver.rb index 9d57501f4..6c990dc8e 100644 --- a/app/models/nameserver.rb +++ b/app/models/nameserver.rb @@ -5,7 +5,7 @@ class Nameserver < ActiveRecord::Base belongs_to :domain, required: true # rubocop: disable Metrics/LineLength - validates :hostname, 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_ipv6 # rubocop: enable Metrics/LineLength @@ -40,6 +40,8 @@ class Nameserver < ActiveRecord::Base end def check_label_length + return unless hostname + hostname_puny.split('.').each do |label| errors.add(:hostname, :puny_to_long) if label.length > 63 end diff --git a/db/migrate/20180129233223_change_nameservers_hostname_to_not_null.rb b/db/migrate/20180129233223_change_nameservers_hostname_to_not_null.rb new file mode 100644 index 000000000..d665abcab --- /dev/null +++ b/db/migrate/20180129233223_change_nameservers_hostname_to_not_null.rb @@ -0,0 +1,5 @@ +class ChangeNameserversHostnameToNotNull < ActiveRecord::Migration + def change + change_column_null :nameservers, :hostname, false + end +end diff --git a/db/structure.sql b/db/structure.sql index 435c2cefe..52f22c900 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -2221,7 +2221,7 @@ ALTER SEQUENCE messages_id_seq OWNED BY messages.id; CREATE TABLE nameservers ( id integer NOT NULL, - hostname character varying, + hostname character varying NOT NULL, ipv4 character varying[] DEFAULT '{}'::character varying[], created_at timestamp without time zone, updated_at timestamp without time zone, @@ -5082,3 +5082,5 @@ INSERT INTO schema_migrations (version) VALUES ('20180129143538'); INSERT INTO schema_migrations (version) VALUES ('20180129232054'); +INSERT INTO schema_migrations (version) VALUES ('20180129233223'); + diff --git a/test/models/nameserver_test.rb b/test/models/nameserver_test.rb index ce396142f..0d5663eb1 100644 --- a/test/models/nameserver_test.rb +++ b/test/models/nameserver_test.rb @@ -14,4 +14,10 @@ class NameserverTest < ActiveSupport::TestCase @nameserver.validate assert @nameserver.invalid? end + + def test_invalid_without_hostname + @nameserver.hostname = nil + @nameserver.validate + assert @nameserver.invalid? + end end