mirror of
https://github.com/internetee/registry.git
synced 2025-06-08 13:44:47 +02:00
Fail earlier if domain is non-transferable
Regardless of EPP transfer operation #694
This commit is contained in:
parent
126428f38f
commit
4ada9d1bd0
5 changed files with 44 additions and 8 deletions
|
@ -142,6 +142,13 @@ class Epp::DomainsController < EppController
|
||||||
authorize! :transfer, @domain, @password
|
authorize! :transfer, @domain, @password
|
||||||
action = params[:parsed_frame].css('transfer').first[:op]
|
action = params[:parsed_frame].css('transfer').first[:op]
|
||||||
|
|
||||||
|
if @domain.non_transferable?
|
||||||
|
throw :epp_error, {
|
||||||
|
code: '2304',
|
||||||
|
msg: I18n.t(:object_status_prohibits_operation)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
@domain_transfer = @domain.transfer(params[:parsed_frame], action, current_user)
|
@domain_transfer = @domain.transfer(params[:parsed_frame], action, current_user)
|
||||||
|
|
||||||
if @domain_transfer
|
if @domain_transfer
|
||||||
|
|
|
@ -5,6 +5,10 @@ module Concerns::Domain::Transferable
|
||||||
after_initialize :generate_transfer_code, if: :generate_transfer_code?
|
after_initialize :generate_transfer_code, if: :generate_transfer_code?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def non_transferable?
|
||||||
|
!transferrable?
|
||||||
|
end
|
||||||
|
|
||||||
def transfer(new_registrar)
|
def transfer(new_registrar)
|
||||||
old_registrar = registrar
|
old_registrar = registrar
|
||||||
|
|
||||||
|
|
|
@ -644,13 +644,6 @@ class Epp::Domain < Domain
|
||||||
# rubocop: disable Metrics/MethodLength
|
# rubocop: disable Metrics/MethodLength
|
||||||
# rubocop: disable Metrics/AbcSize
|
# rubocop: disable Metrics/AbcSize
|
||||||
def query_transfer(frame, current_user)
|
def query_transfer(frame, current_user)
|
||||||
unless transferrable?
|
|
||||||
throw :epp_error, {
|
|
||||||
code: '2304',
|
|
||||||
msg: I18n.t(:object_status_prohibits_operation)
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
if current_user.registrar == registrar
|
if current_user.registrar == registrar
|
||||||
throw :epp_error, {
|
throw :epp_error, {
|
||||||
code: '2002',
|
code: '2002',
|
||||||
|
|
9
test/fixtures/domains.yml
vendored
9
test/fixtures/domains.yml
vendored
|
@ -28,6 +28,15 @@ library:
|
||||||
period: 1
|
period: 1
|
||||||
period_unit: m
|
period_unit: m
|
||||||
|
|
||||||
|
non_transferable:
|
||||||
|
name: non-transferable.test
|
||||||
|
transfer_code: d382682
|
||||||
|
valid_to: 2010-07-05
|
||||||
|
registrar: bestnames
|
||||||
|
registrant: john
|
||||||
|
statuses:
|
||||||
|
- serverTransferProhibited
|
||||||
|
|
||||||
invalid:
|
invalid:
|
||||||
name: invalid.test
|
name: invalid.test
|
||||||
transfer_code: any
|
transfer_code: any
|
||||||
|
|
|
@ -1,7 +1,30 @@
|
||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class EppDomainTransferBaseTest < ActionDispatch::IntegrationTest
|
class EppDomainTransferBaseTest < ActionDispatch::IntegrationTest
|
||||||
def test_does_not_transfer_if_transfer_code_is_wrong
|
def test_non_transferable_domain
|
||||||
|
request_xml = <<-XML
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
|
||||||
|
<command>
|
||||||
|
<transfer op="query">
|
||||||
|
<domain:transfer xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
|
||||||
|
<domain:name>non-transferable.test</domain:name>
|
||||||
|
<domain:authInfo>
|
||||||
|
<domain:pw>d382682</domain:pw>
|
||||||
|
</domain:authInfo>
|
||||||
|
</domain:transfer>
|
||||||
|
</transfer>
|
||||||
|
</command>
|
||||||
|
</epp>
|
||||||
|
XML
|
||||||
|
|
||||||
|
post '/epp/command/transfer', { frame: request_xml }, { 'HTTP_COOKIE' => 'session=api_bestnames' }
|
||||||
|
domains(:shop).reload
|
||||||
|
assert_equal registrars(:bestnames), domains(:shop).registrar
|
||||||
|
assert_equal '2304', Nokogiri::XML(response.body).at_css('result')[:code]
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_wrong_transfer_code
|
||||||
request_xml = <<-XML
|
request_xml = <<-XML
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
|
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue