diff --git a/app/models/reserved_domain.rb b/app/models/reserved_domain.rb index 3da9f1098..2e3d17a20 100644 --- a/app/models/reserved_domain.rb +++ b/app/models/reserved_domain.rb @@ -6,6 +6,8 @@ class ReservedDomain < ActiveRecord::Base validates :name, domain_name: true, uniqueness: true + alias_attribute :registration_code, :password + class << self def pw_for(domain_name) name_in_ascii = SimpleIDN.to_ascii(domain_name) diff --git a/test/integration/epp/domain/create/reserved_test.rb b/test/integration/epp/domain/create/reserved_test.rb new file mode 100644 index 000000000..1a57cd220 --- /dev/null +++ b/test/integration/epp/domain/create/reserved_test.rb @@ -0,0 +1,142 @@ +require 'test_helper' + +class EppDomainCreateReservedTest < ApplicationIntegrationTest + setup do + @reserved_domain = reserved_domains(:one) + end + + def test_registers_reserved_domain_with_correct_registration_code + assert_equal 'reserved.test', @reserved_domain.name + assert_equal 'reserved-001', @reserved_domain.registration_code + + request_xml = <<-XML + + + + + + reserved.test + john-001 + + + + + #{'test' * 2000} + + reserved-001 + + + + + + XML + + assert_difference 'Domain.count' do + post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames' + end + + response_xml = Nokogiri::XML(response.body) + assert_equal '1000', response_xml.at_css('result')[:code] + assert_equal 1, Nokogiri::XML(response.body).css('result').size + end + + def test_registering_reserved_domain_regenerates_registration_code + assert_equal 'reserved.test', @reserved_domain.name + assert_equal 'reserved-001', @reserved_domain.registration_code + + request_xml = <<-XML + + + + + + reserved.test + john-001 + + + + + #{'test' * 2000} + + reserved-001 + + + + + + XML + + post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames' + @reserved_domain.reload + + assert_not_equal 'reserved-001', @reserved_domain.registration_code + end + + def test_domain_cannot_be_registered_with_wrong_registration_code + assert_equal 'reserved.test', @reserved_domain.name + assert_equal 'reserved-001', @reserved_domain.registration_code + + request_xml = <<-XML + + + + + + reserved.test + john-001 + + + + + #{'test' * 2000} + + wrong + + + + + + XML + + assert_no_difference 'Domain.count' do + post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames' + end + + response_xml = Nokogiri::XML(response.body) + assert_equal '2202', response_xml.at_css('result')[:code] + assert_equal 'Invalid authorization information; invalid reserved>pw value', + response_xml.at_css('result msg').text + end + + def test_domain_cannot_be_registered_without_registration_code + assert_equal 'reserved.test', @reserved_domain.name + + request_xml = <<-XML + + + + + + reserved.test + john-001 + + + + + #{'test' * 2000} + + + + + XML + + assert_no_difference 'Domain.count' do + post '/epp/command/create', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames' + end + + response_xml = Nokogiri::XML(response.body) + assert_equal '2003', response_xml.at_css('result')[:code] + assert_equal 'Required parameter missing; reserved>pw element required for reserved domains', + response_xml.at_css('result msg').text + end +end diff --git a/test/models/reserved_domain_test.rb b/test/models/reserved_domain_test.rb index 30736d06d..2515a1e5d 100644 --- a/test/models/reserved_domain_test.rb +++ b/test/models/reserved_domain_test.rb @@ -8,4 +8,9 @@ class ReservedDomainTest < ActiveSupport::TestCase def test_fixture_is_valid assert @reserved_domain.valid? end + + def test_aliases_registration_code_to_password + reserved_domain = ReservedDomain.new(password: 'reserved-001') + assert_equal 'reserved-001', reserved_domain.registration_code + end end