mirror of
https://github.com/internetee/registry.git
synced 2025-06-08 21:54:48 +02:00
Do not handle not registered domain in EPP domain:info
This commit is contained in:
parent
d86ec026e3
commit
66417d69d9
7 changed files with 41 additions and 183 deletions
|
@ -1,56 +1,22 @@
|
||||||
class Epp::DomainsController < EppController
|
class Epp::DomainsController < EppController
|
||||||
before_action :find_domain, only: %i[renew update transfer delete]
|
before_action :find_domain, only: %i[info renew update transfer delete]
|
||||||
before_action :find_password, only: %i[update transfer delete]
|
before_action :find_password, only: %i[info update transfer delete]
|
||||||
skip_authorization_check only: :info
|
|
||||||
|
|
||||||
def info
|
def info
|
||||||
domain_name = DNS::DomainName.new(params[:parsed_frame].at_css('name').text.strip.downcase)
|
authorize! :info, @domain, @password
|
||||||
|
|
||||||
if Domain.release_to_auction
|
@hosts = params[:parsed_frame].css('name').first['hosts'] || 'all'
|
||||||
if domain_name.at_auction?
|
|
||||||
@name = domain_name
|
case @hosts
|
||||||
@status = 'At auction'
|
when 'del'
|
||||||
render_epp_response '/epp/domains/info/unregistered_domain'
|
@nameservers = @domain.delegated_nameservers.sort
|
||||||
return
|
when 'sub'
|
||||||
elsif domain_name.awaiting_payment?
|
@nameservers = @domain.subordinate_nameservers.sort
|
||||||
@name = domain_name
|
when 'all'
|
||||||
@status = 'Awaiting payment'
|
@nameservers = @domain.nameservers.sort
|
||||||
render_epp_response '/epp/domains/info/unregistered_domain'
|
|
||||||
return
|
|
||||||
elsif domain_name.pending_registration?
|
|
||||||
@name = domain_name
|
|
||||||
@status = 'Reserved'
|
|
||||||
render_epp_response '/epp/domains/info/unregistered_domain'
|
|
||||||
return
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if domain_name.registered?
|
render_epp_response '/epp/domains/info'
|
||||||
find_domain
|
|
||||||
find_password
|
|
||||||
authorize! :info, @domain, @password
|
|
||||||
|
|
||||||
@hosts = params[:parsed_frame].css('name').first['hosts'] || 'all'
|
|
||||||
|
|
||||||
case @hosts
|
|
||||||
when 'del'
|
|
||||||
@nameservers = @domain.delegated_nameservers.sort
|
|
||||||
when 'sub'
|
|
||||||
@nameservers = @domain.subordinate_nameservers.sort
|
|
||||||
when 'all'
|
|
||||||
@nameservers = @domain.nameservers.sort
|
|
||||||
end
|
|
||||||
|
|
||||||
render_epp_response '/epp/domains/info/registered_domain'
|
|
||||||
elsif domain_name.blocked?
|
|
||||||
@name = domain_name
|
|
||||||
@status = 'Blocked'
|
|
||||||
render_epp_response '/epp/domains/info/unregistered_domain'
|
|
||||||
elsif domain_name.reserved?
|
|
||||||
@name = domain_name
|
|
||||||
@status = 'Reserved'
|
|
||||||
render_epp_response '/epp/domains/info/unregistered_domain'
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
|
|
@ -57,6 +57,10 @@ module DNS
|
||||||
Domain.find_by_idn(name)
|
Domain.find_by_idn(name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def not_registered?
|
||||||
|
!registered?
|
||||||
|
end
|
||||||
|
|
||||||
def blocked?
|
def blocked?
|
||||||
BlockedDomain.where(name: name).any?
|
BlockedDomain.where(name: name).any?
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
xml.epp_head do
|
|
||||||
xml.response do
|
|
||||||
xml.result code: '1000' do
|
|
||||||
xml.msg 'Command completed successfully'
|
|
||||||
end
|
|
||||||
|
|
||||||
xml.resData do
|
|
||||||
xml.tag! 'domain:infData', 'xmlns:domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd' do
|
|
||||||
xml.tag! 'domain:name', @name
|
|
||||||
xml.tag! 'domain:status', 's' => @status
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
render 'epp/shared/trID', builder: xml
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,87 +0,0 @@
|
||||||
require 'test_helper'
|
|
||||||
|
|
||||||
class EppDomainInfoAuctionTest < ApplicationIntegrationTest
|
|
||||||
setup do
|
|
||||||
@auction = auctions(:one)
|
|
||||||
Domain.release_to_auction = true
|
|
||||||
end
|
|
||||||
|
|
||||||
teardown do
|
|
||||||
Domain.release_to_auction = false
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_domain_is_unavailable_when_at_auction
|
|
||||||
@auction.update!(status: Auction.statuses[:started])
|
|
||||||
|
|
||||||
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>
|
|
||||||
<info>
|
|
||||||
<domain:info xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
|
|
||||||
<domain:name>auction.test</domain:name>
|
|
||||||
</domain:info>
|
|
||||||
</info>
|
|
||||||
</command>
|
|
||||||
</epp>
|
|
||||||
XML
|
|
||||||
|
|
||||||
post '/epp/command/info', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
|
|
||||||
|
|
||||||
response_xml = Nokogiri::XML(response.body)
|
|
||||||
assert_equal '1000', response_xml.at_css('result')[:code]
|
|
||||||
assert_equal 1, response_xml.css('result').size
|
|
||||||
assert_equal 'auction.test', response_xml.at_xpath('//domain:name', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd').text
|
|
||||||
assert_equal 'At auction', response_xml.at_xpath('//domain:status', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd')['s']
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_domain_is_reserved_when_awaiting_payment
|
|
||||||
@auction.update!(status: Auction.statuses[:awaiting_payment])
|
|
||||||
|
|
||||||
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>
|
|
||||||
<info>
|
|
||||||
<domain:info xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
|
|
||||||
<domain:name>auction.test</domain:name>
|
|
||||||
</domain:info>
|
|
||||||
</info>
|
|
||||||
</command>
|
|
||||||
</epp>
|
|
||||||
XML
|
|
||||||
|
|
||||||
post '/epp/command/info', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
|
|
||||||
|
|
||||||
response_xml = Nokogiri::XML(response.body)
|
|
||||||
assert_equal '1000', response_xml.at_css('result')[:code]
|
|
||||||
assert_equal 1, response_xml.css('result').size
|
|
||||||
assert_equal 'auction.test', response_xml.at_xpath('//domain:name', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd').text
|
|
||||||
assert_equal 'Awaiting payment', response_xml.at_xpath('//domain:status', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd')['s']
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_domain_is_reserved_when_payment_received
|
|
||||||
@auction.update!(status: Auction.statuses[:payment_received])
|
|
||||||
|
|
||||||
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>
|
|
||||||
<info>
|
|
||||||
<domain:info xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
|
|
||||||
<domain:name>auction.test</domain:name>
|
|
||||||
</domain:info>
|
|
||||||
</info>
|
|
||||||
</command>
|
|
||||||
</epp>
|
|
||||||
XML
|
|
||||||
|
|
||||||
post '/epp/command/info', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
|
|
||||||
|
|
||||||
response_xml = Nokogiri::XML(response.body)
|
|
||||||
assert_equal '1000', response_xml.at_css('result')[:code]
|
|
||||||
assert_equal 1, response_xml.css('result').size
|
|
||||||
assert_equal 'auction.test', response_xml.at_xpath('//domain:name', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd').text
|
|
||||||
assert_equal 'Reserved', response_xml.at_xpath('//domain:status', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd')['s']
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -107,8 +107,8 @@ class EppDomainInfoBaseTest < ApplicationIntegrationTest
|
||||||
'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd')
|
'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd')
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_blocked_domain
|
def test_returns_not_found_error_when_domain_is_not_registered
|
||||||
assert_equal 'blocked.test', blocked_domains(:one).name
|
assert DNS::DomainName.new('not-registered.test').not_registered?
|
||||||
|
|
||||||
request_xml = <<-XML
|
request_xml = <<-XML
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
@ -116,7 +116,7 @@ class EppDomainInfoBaseTest < ApplicationIntegrationTest
|
||||||
<command>
|
<command>
|
||||||
<info>
|
<info>
|
||||||
<domain:info xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
|
<domain:info xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
|
||||||
<domain:name>blocked.test</domain:name>
|
<domain:name>not-registered.test</domain:name>
|
||||||
</domain:info>
|
</domain:info>
|
||||||
</info>
|
</info>
|
||||||
</command>
|
</command>
|
||||||
|
@ -126,34 +126,7 @@ class EppDomainInfoBaseTest < ApplicationIntegrationTest
|
||||||
post '/epp/command/info', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
|
post '/epp/command/info', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
|
||||||
|
|
||||||
response_xml = Nokogiri::XML(response.body)
|
response_xml = Nokogiri::XML(response.body)
|
||||||
assert_equal '1000', response_xml.at_css('result')[:code]
|
assert_equal '2303', response_xml.at_css('result')[:code]
|
||||||
assert_equal 1, response_xml.css('result').size
|
assert_equal 'Domain not found', response_xml.at_css('result msg').text
|
||||||
assert_equal 'blocked.test', response_xml.at_xpath('//domain:name', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd').text
|
|
||||||
assert_equal 'Blocked', response_xml.at_xpath('//domain:status', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd')['s']
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
def test_reserved_domain
|
|
||||||
assert_equal 'reserved.test', reserved_domains(:one).name
|
|
||||||
|
|
||||||
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>
|
|
||||||
<info>
|
|
||||||
<domain:info xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
|
|
||||||
<domain:name>reserved.test</domain:name>
|
|
||||||
</domain:info>
|
|
||||||
</info>
|
|
||||||
</command>
|
|
||||||
</epp>
|
|
||||||
XML
|
|
||||||
|
|
||||||
post '/epp/command/info', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
|
|
||||||
|
|
||||||
response_xml = Nokogiri::XML(response.body)
|
|
||||||
assert_equal '1000', response_xml.at_css('result')[:code]
|
|
||||||
assert_equal 1, response_xml.css('result').size
|
|
||||||
assert_equal 'reserved.test', response_xml.at_xpath('//domain:name', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd').text
|
|
||||||
assert_equal 'Reserved', response_xml.at_xpath('//domain:status', 'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd')['s']
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -123,4 +123,22 @@ class DNS::DomainNameTest < ActiveSupport::TestCase
|
||||||
assert DNS::DomainName.new('reserved.test').reserved?
|
assert DNS::DomainName.new('reserved.test').reserved?
|
||||||
assert_not DNS::DomainName.new('unreserved.test').reserved?
|
assert_not DNS::DomainName.new('unreserved.test').reserved?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_registered_when_domain_exists
|
||||||
|
assert Domain.exists?(name: 'shop.test')
|
||||||
|
|
||||||
|
domain_name = DNS::DomainName.new('shop.test')
|
||||||
|
|
||||||
|
assert domain_name.registered?
|
||||||
|
refute domain_name.not_registered?
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_not_registered_when_domain_does_not_exist
|
||||||
|
assert_not Domain.exists?(name: 'not-registered.test')
|
||||||
|
|
||||||
|
domain_name = DNS::DomainName.new('not-registered.test')
|
||||||
|
|
||||||
|
assert domain_name.not_registered?
|
||||||
|
assert_not domain_name.registered?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue