diff --git a/app/helpers/epp/domains_helper.rb b/app/helpers/epp/domains_helper.rb index 968a902b4..604dc0fc5 100644 --- a/app/helpers/epp/domains_helper.rb +++ b/app/helpers/epp/domains_helper.rb @@ -8,7 +8,11 @@ module Epp::DomainsHelper if domain.errors.added?(:name, :taken) @code = '2302' @msg = 'Domain name already exists' + elsif domain.errors.added?(:name, :epp_domain_reserved) + @code = '2302' + @msg = domain.errors[:name].first end + render '/epp/error' end end diff --git a/app/models/domain.rb b/app/models/domain.rb index 8c5503454..d358c4aa6 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -30,7 +30,7 @@ class Domain < ActiveRecord::Base end if !DomainNameValidator.validate_reservation(x) - res << {name: x, avail: 0, reason: 'Domain name is reserved or restricted'} + res << {name: x, avail: 0, reason: I18n.t('errors.messages.epp_domain_reserved')} next end diff --git a/app/validators/domain_name_validator.rb b/app/validators/domain_name_validator.rb index 291e23bc3..d350ce302 100644 --- a/app/validators/domain_name_validator.rb +++ b/app/validators/domain_name_validator.rb @@ -10,7 +10,7 @@ class DomainNameValidator < ActiveModel::EachValidator if !self.class.validate_format(value) record.errors[attribute] << (options[:message] || 'invalid format') elsif !self.class.validate_reservation(value) - record.errors[attribute] << (options[:message] || 'Domain name is reserved or restricted') + record.errors[attribute] << (options[:message] || I18n.t('errors.messages.epp_domain_reserved')) end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 065395716..df5b989ac 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -20,4 +20,7 @@ # available at http://guides.rubyonrails.org/i18n.html. en: + errors: + messages: + epp_domain_reserved: 'Domain name is reserved or restricted' hello: "Hello world" diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 769e81425..9cc797e25 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -23,6 +23,14 @@ describe 'EPP Domain', epp: true do expect(response[:clTRID]).to eq('ABC-12345') end + it 'does not create reserved domain' do + Fabricate(:reserved_domain) + response = epp_request('domains/create_reserved.xml') + expect(response[:result_code]).to eq('2302') + expect(response[:msg]).to eq('Domain name is reserved or restricted') + expect(response[:clTRID]).to eq('ABC-12345') + end + it 'checks a domain' do response = epp_request('domains/check.xml') expect(response[:result_code]).to eq('1000') diff --git a/spec/epp/requests/domains/create_reserved.xml b/spec/epp/requests/domains/create_reserved.xml new file mode 100644 index 000000000..681261d91 --- /dev/null +++ b/spec/epp/requests/domains/create_reserved.xml @@ -0,0 +1,23 @@ + + + + + + 1162.ee + 1 + + ns1.example.net + ns2.example.net + + jd1234 + sh8013 + sh8013 + + 2fooBAR + + + + ABC-12345 + +