From 89bf6f040194aba7d02e5c388a0eea1a51fe1093 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 17 Sep 2019 13:50:13 +0300 Subject: [PATCH] Add EPP domain:renew tests --- .../epp/domain/domain_renew_test.rb | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) 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