diff --git a/app/helpers/epp/domains_helper.rb b/app/helpers/epp/domains_helper.rb index f682a7c1b..cfd9a468d 100644 --- a/app/helpers/epp/domains_helper.rb +++ b/app/helpers/epp/domains_helper.rb @@ -32,6 +32,7 @@ module Epp::DomainsHelper end def renew_domain + # TODO support period unit @domain = find_domain handle_errors(@domain) and return unless @domain @@ -49,11 +50,11 @@ module Epp::DomainsHelper end def find_domain - @domain = Domain.find_by(name: @ph[:name]) - unless @domain + domain = Domain.find_by(name: @ph[:name]) + unless domain epp_errors << {code: '2303', msg: I18n.t('errors.messages.epp_domain_not_found'), value: {obj: 'name', val: @ph[:name]}} end - @domain + domain end def domain_create_params(ph) diff --git a/app/models/domain.rb b/app/models/domain.rb index fd4ddaa16..ab52e62dd 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -7,7 +7,7 @@ class Domain < ActiveRecord::Base EPP_CODE_MAP = { '2302' => ['Domain name already exists', 'Domain name is reserved or restricted'], # Object exists '2306' => ['Registrant is missing', 'Admin contact is missing', 'Given and current expire dates do not match'], # Parameter policy error - '2004' => ['Nameservers count must be between 1-13'], # Parameter value range error + '2004' => ['Nameservers count must be between 1-13', 'Period must add up to 1, 2 or 3 years'], # Parameter value range error '2303' => ['Contact was not found'] # Object does not exist } @@ -136,7 +136,6 @@ class Domain < ActiveRecord::Base def validate_period return unless period.present? - if period_unit == 'd' valid_values = ['365', '366', '710', '712', '1065', '1068'] elsif period_unit == 'm' @@ -145,7 +144,7 @@ class Domain < ActiveRecord::Base valid_values = ['1', '2', '3'] end - errors.add(:period, :step_error) unless valid_values.include?(period.to_s) + errors.add(:period, :out_of_range) unless valid_values.include?(period.to_s) end def validate_exp_dates(cur_exp_date) diff --git a/config/locales/en.yml b/config/locales/en.yml index d1a66e261..65effec09 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -52,6 +52,8 @@ en: out_of_range: 'Nameservers count must be between %{min}-%{max}' hostname_invalid: 'Hostname is invalid' ip_invalid: 'IP is invalid' + period: + out_of_range: 'Period must add up to 1, 2 or 3 years' nameserver: attributes: hostname: diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 5337058a6..95e353b92 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -150,6 +150,13 @@ describe 'EPP Domain', epp: true do expect(response[:results][0][:result_code]).to eq('2306') expect(response[:results][0][:msg]).to eq('Given and current expire dates do not match') end + + it 'returns an error when given and current exp dates do not match' do + response = epp_request('domains/renew_w_invalid_period.xml') + expect(response[:results][0][:result_code]).to eq('2004') + expect(response[:results][0][:msg]).to eq('Period must add up to 1, 2 or 3 years') + expect(response[:results][0][:value]).to eq('4') + end end it 'checks a domain' do diff --git a/spec/epp/requests/domains/renew_w_invalid_period.xml b/spec/epp/requests/domains/renew_w_invalid_period.xml new file mode 100644 index 000000000..75300b857 --- /dev/null +++ b/spec/epp/requests/domains/renew_w_invalid_period.xml @@ -0,0 +1,14 @@ + + + + + + example.ee + 2014-08-07 + 4 + + + ABC-12345 + +