diff --git a/test/integration/epp/domain/domain_renew_test.rb b/test/integration/epp/domain/domain_renew_test.rb
index e1dfbdae1..8ab598102 100644
--- a/test/integration/epp/domain/domain_renew_test.rb
+++ b/test/integration/epp/domain/domain_renew_test.rb
@@ -4,9 +4,36 @@ class EppDomainRenewTest < EppTestCase
self.use_transactional_fixtures = false
setup do
+ @domain = domains(:shop)
travel_to Time.zone.parse('2010-07-05')
end
+ def test_renews_domain
+ travel_to Time.zone.parse('2010-07-05')
+ original_valid_to = @domain.valid_to
+ default_renewal_period = 1.year
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+ #{@domain.expire_time.to_date}
+ 1
+
+
+
+
+ XML
+
+ post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ @domain.reload
+
+ assert_epp_response :completed_successfully
+ assert_equal original_valid_to + default_renewal_period, @domain.valid_to
+ end
+
def test_domain_cannot_be_renewed_when_invalid
request_xml = <<-XML
@@ -28,4 +55,104 @@ class EppDomainRenewTest < EppTestCase
end
assert_epp_response :object_status_prohibits_operation
end
+
+ def test_domain_cannot_be_renewed_when_belongs_to_another_registrar
+ session = epp_sessions(:api_bestnames)
+ domain = domains(:metro)
+ assert_not_equal session.user.registrar, domain.registrar
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{domain.name}
+ #{domain.valid_to.to_date}
+ 1
+
+
+
+
+ XML
+
+ assert_no_changes -> { domains(:invalid).valid_to } do
+ post '/epp/command/renew', { frame: request_xml },
+ 'HTTP_COOKIE' => "session=#{session.session_id}"
+ end
+ assert_epp_response :authorization_error
+ end
+
+ def test_insufficient_funds
+ session = epp_sessions(:api_bestnames)
+ session.user.registrar.accounts.first.update!(balance: 0)
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+ #{@domain.expire_time.to_date}
+ 1
+
+
+
+
+ XML
+
+ @domain.reload
+ assert_no_difference -> { @domain.valid_to } do
+ post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => "session=#{session.session_id}"
+ end
+ assert_epp_response :billing_failure
+ end
+
+ def test_no_price
+ assert_nil Billing::Price.find_by(duration: '2 months')
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+ #{@domain.expire_time.to_date}
+ 2
+
+
+
+
+ XML
+
+ assert_no_changes -> { @domain.valid_to } do
+ post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ end
+ assert_epp_response :billing_failure
+ end
+
+ def test_fails_when_provided_expiration_date_is_wrong
+ provided_expiration_date = Date.parse('2010-07-06')
+ assert_not_equal provided_expiration_date, @domain.valid_to
+
+ request_xml = <<-XML
+
+
+
+
+
+ #{@domain.name}
+ #{provided_expiration_date}
+
+
+
+
+ XML
+
+ assert_no_changes -> { @domain.valid_to } do
+ post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ end
+ assert_epp_response :parameter_value_policy_error
+ end
end