From 1654f87e0462cd8b2d47e1083af090ea15d08cbc Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 9 Jun 2015 16:24:43 +0300 Subject: [PATCH 1/2] rubocop: syntax update --- app/controllers/admin/admin_users_controller.rb | 3 ++- config/initializers/relaxed_i18n.rb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/admin_users_controller.rb b/app/controllers/admin/admin_users_controller.rb index 372a9654a..17de2f97d 100644 --- a/app/controllers/admin/admin_users_controller.rb +++ b/app/controllers/admin/admin_users_controller.rb @@ -57,6 +57,7 @@ class Admin::AdminUsersController < AdminController end def admin_user_params - params.require(:admin_user).permit(:username, :password, :password_confirmation, :identity_code, :email, :country_code, { roles: [] }) + params.require(:admin_user).permit(:username, + :password, :password_confirmation, :identity_code, :email, :country_code, { roles: [] }) end end diff --git a/config/initializers/relaxed_i18n.rb b/config/initializers/relaxed_i18n.rb index ca9d0c034..fc9b94983 100644 --- a/config/initializers/relaxed_i18n.rb +++ b/config/initializers/relaxed_i18n.rb @@ -4,7 +4,7 @@ module I18n class << self alias_method :original_localize, :localize - def localize object, options = {} + def localize(object, options = {}) object.present? ? original_localize(object, options) : '' end end From 5c68eb558c46a5f7ae71413afd24973adad3356e Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 9 Jun 2015 16:35:02 +0300 Subject: [PATCH 2/2] Validate only puny label length #2608 --- app/models/domain.rb | 6 +++++- app/models/epp/domain.rb | 2 +- app/validators/domain_name_validator.rb | 7 ------- config/locales/en.yml | 2 +- spec/epp/domain_spec.rb | 2 +- spec/models/domain_spec.rb | 18 +++++++++++++----- 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/app/models/domain.rb b/app/models/domain.rb index 8335d5f42..e7a86c1e5 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -70,7 +70,7 @@ class Domain < ActiveRecord::Base after_save :update_whois_record validates :name_dirty, domain_name: true, uniqueness: true - validates :name_puny, length: { maximum: 66 } + validates :puny_label, length: { maximum: 63 } validates :period, numericality: { only_integer: true } validates :registrant, :registrar, presence: true @@ -160,6 +160,10 @@ class Domain < ActiveRecord::Base "EIS-#{id}" end + def puny_label + name_puny.to_s.split('.').first + end + def registrant_typeahead @registrant_typeahead || registrant.try(:name) || nil end diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index ecd13ad55..2035e7349 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -56,7 +56,7 @@ class Epp::Domain < Domain ], '2005' => [ # Parameter value syntax error [:name_dirty, :invalid, { obj: 'name', val: name_dirty }], - [:name_puny, :too_long, { obj: 'name', val: name_puny }] + [:puny_label, :too_long, { obj: 'name', val: name_puny }] ], '2201' => [ # Authorisation error [:auth_info, :wrong_pw] diff --git a/app/validators/domain_name_validator.rb b/app/validators/domain_name_validator.rb index 6a2d41c43..93046c882 100644 --- a/app/validators/domain_name_validator.rb +++ b/app/validators/domain_name_validator.rb @@ -1,11 +1,4 @@ class DomainNameValidator < ActiveModel::EachValidator - # TODO - # validates lenght of 2-63 - # validates/honours Estonian additional letters zäõüö - # honours punicode and all interfces honors utf8 - # validates lower level domains (.pri.ee, edu.ee etc) - # lower level domains are fixed for .ee and can add statically into settings - def validate_each(record, attribute, value) if !self.class.validate_format(value) record.errors[attribute] << (options[:message] || record.errors.generate_message(attribute, :invalid)) diff --git a/config/locales/en.yml b/config/locales/en.yml index 1621ce783..5efa0fbb2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -64,7 +64,7 @@ en: invalid: 'Domain name is invalid' reserved: 'Domain name is reserved or restricted' taken: 'Domain name already exists' - name_puny: + puny_label: too_long: 'Domain name is too long (maximum is 63 characters)' registrant: blank: 'Registrant is missing' diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index b3321641b..9a380287e 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -193,7 +193,7 @@ describe 'EPP Domain', epp: true do xml = domain_create_xml(name: { value: "#{'ä' * 63}.ee" }) response = epp_plain_request(xml) - response[:msg].should == 'Domain name is too long (maximum is 63 characters) [name_puny]' + response[:msg].should == 'Domain name is too long (maximum is 63 characters) [puny_label]' response[:result_code].should == '2005' response[:clTRID].should == 'ABC-12345' end diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index c9177b406..fa5afeff3 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -237,7 +237,7 @@ describe Domain do d.valid? d.errors.full_messages.should match_array([ "Domain name Domain name is invalid", - "Domain name Domain name is too long (maximum is 63 characters)" + "Puny label is too long (maximum is 63 characters)" ]) end @@ -247,7 +247,15 @@ describe Domain do d.valid? d.errors.full_messages.should match_array([ "Domain name Domain name is invalid", - "Domain name Domain name is too long (maximum is 63 characters)" + "Puny label is too long (maximum is 63 characters)" + ]) + end + + it 'should be valid when name length is 63 characters' do + d = Fabricate.build(:domain, + name: "õäöüšžõäöüšžõäöüšžõäöüšžõäöüšžõäöüšžõäöüšžab123.pri.ee") + d.valid? + d.errors.full_messages.should match_array([ ]) end @@ -255,7 +263,7 @@ describe Domain do d = Fabricate.build(:domain, name: "#{'ä' * 63}.ee") d.valid? d.errors.full_messages.should == [ - "Domain name Domain name is too long (maximum is 63 characters)" + "Puny label is too long (maximum is 63 characters)" ] end @@ -264,7 +272,7 @@ describe Domain do d.valid? d.errors.full_messages.should match_array([ "Domain name Domain name is invalid", - "Domain name Domain name is too long (maximum is 63 characters)" + "Puny label is too long (maximum is 63 characters)" ]) end @@ -272,7 +280,7 @@ describe Domain do d = Fabricate.build(:domain, name: "#{'ä' * 63}.pri.ee") d.valid? d.errors.full_messages.should match_array([ - "Domain name Domain name is too long (maximum is 63 characters)" + "Puny label is too long (maximum is 63 characters)" ]) end