diff --git a/app/controllers/epp/domains_controller.rb b/app/controllers/epp/domains_controller.rb
index d9504a71d..acbe4082a 100644
--- a/app/controllers/epp/domains_controller.rb
+++ b/app/controllers/epp/domains_controller.rb
@@ -1,56 +1,22 @@
class Epp::DomainsController < EppController
- before_action :find_domain, only: %i[renew update transfer delete]
- before_action :find_password, only: %i[update transfer delete]
- skip_authorization_check only: :info
+ before_action :find_domain, only: %i[info renew update transfer delete]
+ before_action :find_password, only: %i[info update transfer delete]
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
- if domain_name.at_auction?
- @name = domain_name
- @status = 'At auction'
- render_epp_response '/epp/domains/info/unregistered_domain'
- return
- elsif domain_name.awaiting_payment?
- @name = domain_name
- @status = 'Awaiting payment'
- 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
+ @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
- if domain_name.registered?
- 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
+ render_epp_response '/epp/domains/info'
end
def create
diff --git a/app/models/dns/domain_name.rb b/app/models/dns/domain_name.rb
index 05eea2086..3a45ddc74 100644
--- a/app/models/dns/domain_name.rb
+++ b/app/models/dns/domain_name.rb
@@ -57,6 +57,10 @@ module DNS
Domain.find_by_idn(name)
end
+ def not_registered?
+ !registered?
+ end
+
def blocked?
BlockedDomain.where(name: name).any?
end
diff --git a/app/views/epp/domains/info/registered_domain.xml.builder b/app/views/epp/domains/info.xml.builder
similarity index 100%
rename from app/views/epp/domains/info/registered_domain.xml.builder
rename to app/views/epp/domains/info.xml.builder
diff --git a/app/views/epp/domains/info/unregistered_domain.xml.builder b/app/views/epp/domains/info/unregistered_domain.xml.builder
deleted file mode 100644
index a34dfa51a..000000000
--- a/app/views/epp/domains/info/unregistered_domain.xml.builder
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/test/integration/epp/domain/info/auction_test.rb b/test/integration/epp/domain/info/auction_test.rb
deleted file mode 100644
index 3b67ab7fd..000000000
--- a/test/integration/epp/domain/info/auction_test.rb
+++ /dev/null
@@ -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
-
-
-
-
-
- auction.test
-
-
-
-
- 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
-
-
-
-
-
- auction.test
-
-
-
-
- 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
-
-
-
-
-
- auction.test
-
-
-
-
- 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
diff --git a/test/integration/epp/domain/info/base_test.rb b/test/integration/epp/domain/info/base_test.rb
index 93f04a476..2ba273951 100644
--- a/test/integration/epp/domain/info/base_test.rb
+++ b/test/integration/epp/domain/info/base_test.rb
@@ -107,8 +107,8 @@ class EppDomainInfoBaseTest < ApplicationIntegrationTest
'domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd')
end
- def test_blocked_domain
- assert_equal 'blocked.test', blocked_domains(:one).name
+ def test_returns_not_found_error_when_domain_is_not_registered
+ assert DNS::DomainName.new('not-registered.test').not_registered?
request_xml = <<-XML
@@ -116,7 +116,7 @@ class EppDomainInfoBaseTest < ApplicationIntegrationTest
- blocked.test
+ not-registered.test
@@ -126,34 +126,7 @@ class EppDomainInfoBaseTest < ApplicationIntegrationTest
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 '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']
+ assert_equal '2303', response_xml.at_css('result')[:code]
+ assert_equal 'Domain not found', response_xml.at_css('result msg').text
end
-
- def test_reserved_domain
- assert_equal 'reserved.test', reserved_domains(:one).name
-
- request_xml = <<-XML
-
-
-
-
-
- reserved.test
-
-
-
-
- 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
+end
\ No newline at end of file
diff --git a/test/models/dns/domain_name_test.rb b/test/models/dns/domain_name_test.rb
index e1e9df79e..4d66227d5 100644
--- a/test/models/dns/domain_name_test.rb
+++ b/test/models/dns/domain_name_test.rb
@@ -123,4 +123,22 @@ class DNS::DomainNameTest < ActiveSupport::TestCase
assert DNS::DomainName.new('reserved.test').reserved?
assert_not DNS::DomainName.new('unreserved.test').reserved?
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