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