mirror of
https://github.com/internetee/registry.git
synced 2025-07-24 03:30:33 +02:00
parent
5bf19de296
commit
be8ce276c7
3 changed files with 61 additions and 124 deletions
|
@ -6,21 +6,6 @@ module Concerns::Domain::ForceDelete
|
|||
end
|
||||
|
||||
def schedule_force_delete
|
||||
self.statuses_backup = statuses
|
||||
statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_DELETE_PROHIBITED)
|
||||
statuses.delete(DomainStatus::PENDING_UPDATE)
|
||||
statuses.delete(DomainStatus::PENDING_TRANSFER)
|
||||
statuses.delete(DomainStatus::PENDING_RENEW)
|
||||
statuses.delete(DomainStatus::PENDING_CREATE)
|
||||
|
||||
statuses.delete(DomainStatus::FORCE_DELETE)
|
||||
statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_UPDATE_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_MANUAL_INZONE)
|
||||
statuses.delete(DomainStatus::PENDING_DELETE)
|
||||
|
||||
statuses << DomainStatus::FORCE_DELETE
|
||||
statuses << DomainStatus::SERVER_RENEW_PROHIBITED
|
||||
statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED
|
||||
|
@ -31,20 +16,32 @@ module Concerns::Domain::ForceDelete
|
|||
statuses << DomainStatus::SERVER_MANUAL_INZONE
|
||||
end
|
||||
|
||||
self.force_delete_at = (Time.zone.now + (Setting.redemption_grace_period.days + 1.day)).utc.beginning_of_day unless force_delete_at
|
||||
save!(validate: false)
|
||||
self.force_delete_at = (Time.zone.now + (Setting.redemption_grace_period.days + 1.day)).utc
|
||||
.beginning_of_day
|
||||
stop_all_pending_actions
|
||||
save(validate: false)
|
||||
end
|
||||
|
||||
def cancel_force_delete
|
||||
s = []
|
||||
s << DomainStatus::EXPIRED if statuses.include?(DomainStatus::EXPIRED)
|
||||
s << DomainStatus::SERVER_HOLD if statuses.include?(DomainStatus::SERVER_HOLD)
|
||||
s << DomainStatus::DELETE_CANDIDATE if statuses.include?(DomainStatus::DELETE_CANDIDATE)
|
||||
|
||||
self.statuses = (statuses_backup + s).uniq
|
||||
statuses.delete(DomainStatus::FORCE_DELETE)
|
||||
statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_UPDATE_PROHIBITED)
|
||||
statuses.delete(DomainStatus::PENDING_DELETE)
|
||||
statuses.delete(DomainStatus::SERVER_MANUAL_INZONE)
|
||||
|
||||
self.force_delete_at = nil
|
||||
self.statuses_backup = []
|
||||
save(validate: false)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def stop_all_pending_actions
|
||||
statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_DELETE_PROHIBITED)
|
||||
statuses.delete(DomainStatus::PENDING_UPDATE)
|
||||
statuses.delete(DomainStatus::PENDING_TRANSFER)
|
||||
statuses.delete(DomainStatus::PENDING_RENEW)
|
||||
statuses.delete(DomainStatus::PENDING_CREATE)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,100 +0,0 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Domain do
|
||||
before :example do
|
||||
create(:zone, origin: 'ee')
|
||||
end
|
||||
|
||||
it 'should set force delete time' do
|
||||
domain = build(:domain)
|
||||
domain.nameservers.build(attributes_for(:nameserver))
|
||||
domain.nameservers.build(attributes_for(:nameserver))
|
||||
domain.save!
|
||||
|
||||
domain.statuses = ['ok']
|
||||
domain.schedule_force_delete
|
||||
|
||||
domain.statuses.should match_array([
|
||||
"serverForceDelete",
|
||||
"pendingDelete",
|
||||
"serverManualInzone",
|
||||
"serverRenewProhibited",
|
||||
"serverTransferProhibited",
|
||||
"serverUpdateProhibited"
|
||||
])
|
||||
|
||||
domain.cancel_force_delete
|
||||
|
||||
domain.statuses.should == ['ok']
|
||||
|
||||
domain.statuses = [
|
||||
DomainStatus::CLIENT_DELETE_PROHIBITED,
|
||||
DomainStatus::SERVER_DELETE_PROHIBITED,
|
||||
DomainStatus::PENDING_UPDATE,
|
||||
DomainStatus::PENDING_TRANSFER,
|
||||
DomainStatus::PENDING_RENEW,
|
||||
DomainStatus::PENDING_CREATE,
|
||||
DomainStatus::CLIENT_HOLD,
|
||||
DomainStatus::EXPIRED,
|
||||
DomainStatus::SERVER_HOLD,
|
||||
DomainStatus::DELETE_CANDIDATE
|
||||
]
|
||||
|
||||
domain.save
|
||||
|
||||
domain.schedule_force_delete
|
||||
|
||||
domain.statuses.should match_array([
|
||||
"clientHold",
|
||||
"deleteCandidate",
|
||||
"expired",
|
||||
"serverForceDelete",
|
||||
"pendingDelete",
|
||||
"serverHold",
|
||||
"serverRenewProhibited",
|
||||
"serverTransferProhibited",
|
||||
"serverUpdateProhibited"
|
||||
])
|
||||
|
||||
domain.cancel_force_delete
|
||||
|
||||
domain.statuses.should match_array([
|
||||
"clientDeleteProhibited",
|
||||
"clientHold",
|
||||
"deleteCandidate",
|
||||
"expired",
|
||||
"pendingCreate",
|
||||
"pendingRenew",
|
||||
"pendingTransfer",
|
||||
"pendingUpdate",
|
||||
"serverDeleteProhibited",
|
||||
"serverHold"
|
||||
])
|
||||
end
|
||||
|
||||
it 'should should be manual in zone and held after force delete' do
|
||||
domain = create(:domain)
|
||||
Setting.redemption_grace_period = 1
|
||||
|
||||
domain.valid?
|
||||
domain.outzone_at = Time.zone.now + 1.day # before redemption grace period
|
||||
# what should this be?
|
||||
# domain.server_holdable?.should be true
|
||||
domain.statuses.include?(DomainStatus::SERVER_HOLD).should be false
|
||||
domain.statuses.include?(DomainStatus::SERVER_MANUAL_INZONE).should be false
|
||||
domain.schedule_force_delete
|
||||
domain.server_holdable?.should be false
|
||||
domain.statuses.include?(DomainStatus::SERVER_MANUAL_INZONE).should be true
|
||||
domain.statuses.include?(DomainStatus::SERVER_HOLD).should be false
|
||||
end
|
||||
|
||||
it 'should not allow update after force delete' do
|
||||
domain = create(:domain)
|
||||
domain.valid?
|
||||
domain.pending_update_prohibited?.should be false
|
||||
domain.update_prohibited?.should be false
|
||||
domain.schedule_force_delete
|
||||
domain.pending_update_prohibited?.should be true
|
||||
domain.update_prohibited?.should be true
|
||||
end
|
||||
end
|
40
test/models/domain/force_delete_test.rb
Normal file
40
test/models/domain/force_delete_test.rb
Normal file
|
@ -0,0 +1,40 @@
|
|||
require 'test_helper'
|
||||
|
||||
class DomainForceDeleteTest < ActiveSupport::TestCase
|
||||
def setup
|
||||
@domain = domains(:shop)
|
||||
end
|
||||
|
||||
def test_schedule_force_delete
|
||||
@original_redemption_grace_period = Setting.redemption_grace_period
|
||||
Setting.redemption_grace_period = 30
|
||||
travel_to Time.zone.parse('2010-07-05 00:00')
|
||||
|
||||
@domain.schedule_force_delete
|
||||
|
||||
assert @domain.force_delete_scheduled?
|
||||
assert_equal Time.zone.parse('2010-08-04 03:00'), @domain.force_delete_at
|
||||
|
||||
travel_back
|
||||
Setting.redemption_grace_period = @original_redemption_grace_period
|
||||
end
|
||||
|
||||
def test_scheduling_force_delete_bypasses_validation
|
||||
@domain = domains(:invalid)
|
||||
@domain.schedule_force_delete
|
||||
assert @domain.force_delete_scheduled?
|
||||
end
|
||||
|
||||
def test_cancel_force_delete
|
||||
@domain.cancel_force_delete
|
||||
assert_not @domain.force_delete_scheduled?
|
||||
assert_nil @domain.force_delete_at
|
||||
end
|
||||
|
||||
def test_cancelling_force_delete_bypasses_validation
|
||||
@domain = domains(:invalid)
|
||||
@domain.schedule_force_delete
|
||||
@domain.cancel_force_delete
|
||||
assert_not @domain.force_delete_scheduled?
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue