diff --git a/app/helpers/epp/domains_helper.rb b/app/helpers/epp/domains_helper.rb index 0cda5e2f7..9d1ea6332 100644 --- a/app/helpers/epp/domains_helper.rb +++ b/app/helpers/epp/domains_helper.rb @@ -167,13 +167,13 @@ module Epp::DomainsHelper ## SHARED def find_domain(secure = { secure: true }) - domain = Epp::EppDomain.find_by(name: @ph[:name]) + domain = Epp::EppDomain.find_by(name: @ph[:name].strip.downcase) unless domain epp_errors << { code: '2303', msg: I18n.t('errors.messages.epp_domain_not_found'), - value: { obj: 'name', val: @ph[:name] } + value: { obj: 'name', val: @ph[:name].strip.downcase } } return nil end @@ -182,7 +182,7 @@ module Epp::DomainsHelper epp_errors << { code: '2302', msg: I18n.t('errors.messages.domain_exists_but_belongs_to_other_registrar'), - value: { obj: 'name', val: @ph[:name] } + value: { obj: 'name', val: @ph[:name].strip.downcase } } return nil end diff --git a/app/models/domain.rb b/app/models/domain.rb index 2dd5f8655..77508bdd0 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -64,6 +64,7 @@ class Domain < ActiveRecord::Base def name=(value) value.strip! + value.downcase! self[:name] = SimpleIDN.to_unicode(value) self[:name_puny] = SimpleIDN.to_ascii(value) self[:name_dirty] = value diff --git a/app/models/epp/epp_domain.rb b/app/models/epp/epp_domain.rb index 1355b63c9..8085edcdf 100644 --- a/app/models/epp/epp_domain.rb +++ b/app/models/epp/epp_domain.rb @@ -477,6 +477,8 @@ class Epp::EppDomain < Domain res = [] domains.each do |x| + x.strip! + x.downcase! unless DomainNameValidator.validate_format(x) res << { name: x, avail: 0, reason: 'invalid format' } next diff --git a/app/views/epp/domains/info.xml.builder b/app/views/epp/domains/info.xml.builder index 30970ab19..bceea1004 100644 --- a/app/views/epp/domains/info.xml.builder +++ b/app/views/epp/domains/info.xml.builder @@ -36,7 +36,7 @@ xml.epp_head do xml.tag!('domain:clID', @domain.registrar_name) - xml.tag!('domain:crID', @domain.versions.first.reify.try(:registrar) || @domain.registrar) #TODO Registrar has to be specified + xml.tag!('domain:crID', @domain.versions.first.try(:reify).try(:registrar) || @domain.registrar) #TODO Registrar has to be specified xml.tag!('domain:crDate', @domain.created_at) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 2888e59f0..a858ecffe 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -743,7 +743,9 @@ describe 'EPP Domain', epp: true do d.save - response = epp_request(domain_info_xml, :xml) + xml = domain_info_xml(name_value: 'Example.ee') + + response = epp_request(xml, :xml) expect(response[:results][0][:result_code]).to eq('1000') expect(response[:results][0][:msg]).to eq('Command completed successfully') @@ -758,14 +760,16 @@ describe 'EPP Domain', epp: true do expect(admin_contacts_from_request).to eq(admin_contacts_existing) - hosts_from_request = inf_data.css('hostObj').map(&:text) - hosts_existing = d.nameservers.where(ipv4: nil).pluck(:hostname) + hosts_from_request = inf_data.css('hostName').map(&:text) + hosts_existing = d.nameservers.pluck(:hostname) expect(hosts_from_request).to eq(hosts_existing) - expect(inf_data.css('hostName').first.text).to eq('ns1.example.com') - expect(inf_data.css('hostAddr').first.text).to eq('192.168.1.1') - expect(inf_data.css('hostAddr').last.text).to eq('1080:0:0:0:8:800:200C:417A') + ns1 = inf_data.css('hostAttr').last + + expect(ns1.css('hostName').last.text).to eq('ns1.example.com') + expect(ns1.css('hostAddr').first.text).to eq('192.168.1.1') + expect(ns1.css('hostAddr').last.text).to eq('1080:0:0:0:8:800:200C:417A') expect(inf_data.css('crDate').text).to eq(d.created_at.to_time.utc.to_s) expect(inf_data.css('exDate').text).to eq(d.valid_to.to_time.utc.to_s) expect(inf_data.css('pw').text).to eq(d.auth_info) @@ -865,6 +869,7 @@ describe 'EPP Domain', epp: true do expect(d.dnskeys.count).to eq(2) response = epp_request(xml, :xml) + expect(response[:results][0][:result_code]).to eq('2302') expect(response[:results][0][:msg]).to eq('Nameserver already exists on this domain') expect(response[:results][0][:value]).to eq('ns1.example.com') diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index f6d7f674a..c4dbaefe8 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -62,6 +62,13 @@ describe Domain do expect(d.errors.messages[:nameservers]).to eq(['Nameservers count must be between 2-7']) end + it 'downcases domain' do + d = Domain.new(name: 'TesT.Ee') + expect(d.name).to eq('test.ee') + expect(d.name_puny).to eq('test.ee') + expect(d.name_dirty).to eq('test.ee') + end + it 'does not create a reserved domain' do Fabricate(:reserved_domain) expect(Fabricate.build(:domain, name: '1162.ee').valid?).to be false