diff --git a/app/models/concerns/domain/releasable.rb b/app/models/concerns/domain/releasable.rb index 81410329b..606a146bc 100644 --- a/app/models/concerns/domain/releasable.rb +++ b/app/models/concerns/domain/releasable.rb @@ -17,14 +17,14 @@ module Domain::Releasable ' AND ? != ALL(coalesce(statuses, array[]::varchar[]))', Time.zone.today, Time.zone.today, - DomainStatus::SERVER_DELETE_PROHIBITED) + DomainStatus::SERVER_RELEASE_PROHIBITED) else where('(delete_date <= ? OR force_delete_date <= ?)' \ ' AND ? != ALL(coalesce(statuses, array[]::varchar[])) AND' \ ' ? != ALL(COALESCE(statuses, array[]::varchar[]))', Time.zone.today, Time.zone.today, - DomainStatus::SERVER_DELETE_PROHIBITED, + DomainStatus::SERVER_RELEASE_PROHIBITED, DomainStatus::DELETE_CANDIDATE) end end diff --git a/app/models/domain_status.rb b/app/models/domain_status.rb index 30161c076..6210da2fa 100644 --- a/app/models/domain_status.rb +++ b/app/models/domain_status.rb @@ -4,6 +4,8 @@ class DomainStatus < ApplicationRecord include EppErrors belongs_to :domain + SERVER_RELEASE_PROHIBITED = 'serverReleaseProhibited' + # Requests to delete the object MUST be rejected. CLIENT_DELETE_PROHIBITED = 'clientDeleteProhibited' SERVER_DELETE_PROHIBITED = 'serverDeleteProhibited' @@ -81,7 +83,7 @@ class DomainStatus < ApplicationRecord INACTIVE, OK, PENDING_CREATE, PENDING_DELETE, PENDING_DELETE_CONFIRMATION, PENDING_RENEW, PENDING_TRANSFER, PENDING_UPDATE, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED, SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED, FORCE_DELETE, - DELETE_CANDIDATE, EXPIRED, DISPUTED + DELETE_CANDIDATE, EXPIRED, DISPUTED, SERVER_RELEASE_PROHIBITED ].freeze CLIENT_STATUSES = [ @@ -92,7 +94,7 @@ class DomainStatus < ApplicationRecord SERVER_STATUSES = [ SERVER_DELETE_PROHIBITED, SERVER_HOLD, SERVER_RENEW_PROHIBITED, SERVER_TRANSFER_PROHIBITED, SERVER_UPDATE_PROHIBITED, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED, - SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED + SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED, SERVER_RELEASE_PROHIBITED ].freeze UPDATE_PROHIBIT_STATES = [ @@ -157,7 +159,8 @@ class DomainStatus < ApplicationRecord ['AdminChangeProhibited', SERVER_ADMIN_CHANGE_PROHIBITED], ['TechChangeProhibited', SERVER_TECH_CHANGE_PROHIBITED], ['UpdateProhibited', SERVER_UPDATE_PROHIBITED], - ['DeleteProhibited', SERVER_DELETE_PROHIBITED] + ['DeleteProhibited', SERVER_DELETE_PROHIBITED], + ['ReleaseProhibited', SERVER_RELEASE_PROHIBITED], ] end diff --git a/test/models/domain/releasable/auctionable_test.rb b/test/models/domain/releasable/auctionable_test.rb index 97d66be4f..675ad3c8e 100644 --- a/test/models/domain/releasable/auctionable_test.rb +++ b/test/models/domain/releasable/auctionable_test.rb @@ -99,10 +99,21 @@ class DomainReleasableAuctionableTest < ActiveJob::TestCase assert_not @domain.domain_name.at_auction? end - def test_ignores_domains_with_server_delete_prohibited_status + def test_does_not_ignore_domains_with_server_delete_prohibited_status @domain.update!(delete_date: '2010-07-04', statuses: [DomainStatus::SERVER_DELETE_PROHIBITED]) travel_to Time.zone.parse('2010-07-05') + assert_changes 'Domain.count' do + Domain.release_domains + end + + assert @domain.domain_name.at_auction? + end + + def test_ignores_domains_with_server_release_prohibited_status + @domain.update!(delete_date: '2010-07-04', statuses: [DomainStatus::SERVER_RELEASE_PROHIBITED]) + travel_to Time.zone.parse('2010-07-05') + assert_no_difference 'Domain.count' do Domain.release_domains end diff --git a/test/models/domain/releasable/discardable_test.rb b/test/models/domain/releasable/discardable_test.rb index a5ff9309e..e8bc5364a 100644 --- a/test/models/domain/releasable/discardable_test.rb +++ b/test/models/domain/releasable/discardable_test.rb @@ -51,13 +51,23 @@ class DomainReleasableDiscardableTest < ActiveSupport::TestCase end end - def test_ignores_domains_with_server_delete_prohibited_status + def test_does_not_ignore_domains_with_server_delete_prohibited_status @domain.update!(delete_date: '2010-07-04', statuses: [DomainStatus::SERVER_DELETE_PROHIBITED]) travel_to Time.zone.parse('2010-07-05') Domain.release_domains @domain.reload + assert @domain.discarded? + end + + def test_ignores_domains_with_server_release_prohibited_status + @domain.update!(delete_date: '2010-07-04', statuses: [DomainStatus::SERVER_RELEASE_PROHIBITED]) + travel_to Time.zone.parse('2010-07-05') + + Domain.release_domains + @domain.reload + assert_not @domain.discarded? end