mirror of
https://github.com/internetee/registry.git
synced 2025-07-25 03:58:27 +02:00
parent
5bf19de296
commit
be8ce276c7
3 changed files with 61 additions and 124 deletions
|
@ -6,21 +6,6 @@ module Concerns::Domain::ForceDelete
|
||||||
end
|
end
|
||||||
|
|
||||||
def schedule_force_delete
|
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::FORCE_DELETE
|
||||||
statuses << DomainStatus::SERVER_RENEW_PROHIBITED
|
statuses << DomainStatus::SERVER_RENEW_PROHIBITED
|
||||||
statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED
|
statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED
|
||||||
|
@ -31,20 +16,32 @@ module Concerns::Domain::ForceDelete
|
||||||
statuses << DomainStatus::SERVER_MANUAL_INZONE
|
statuses << DomainStatus::SERVER_MANUAL_INZONE
|
||||||
end
|
end
|
||||||
|
|
||||||
self.force_delete_at = (Time.zone.now + (Setting.redemption_grace_period.days + 1.day)).utc.beginning_of_day unless force_delete_at
|
self.force_delete_at = (Time.zone.now + (Setting.redemption_grace_period.days + 1.day)).utc
|
||||||
save!(validate: false)
|
.beginning_of_day
|
||||||
|
stop_all_pending_actions
|
||||||
|
save(validate: false)
|
||||||
end
|
end
|
||||||
|
|
||||||
def cancel_force_delete
|
def cancel_force_delete
|
||||||
s = []
|
statuses.delete(DomainStatus::FORCE_DELETE)
|
||||||
s << DomainStatus::EXPIRED if statuses.include?(DomainStatus::EXPIRED)
|
statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED)
|
||||||
s << DomainStatus::SERVER_HOLD if statuses.include?(DomainStatus::SERVER_HOLD)
|
statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED)
|
||||||
s << DomainStatus::DELETE_CANDIDATE if statuses.include?(DomainStatus::DELETE_CANDIDATE)
|
statuses.delete(DomainStatus::SERVER_UPDATE_PROHIBITED)
|
||||||
|
statuses.delete(DomainStatus::PENDING_DELETE)
|
||||||
self.statuses = (statuses_backup + s).uniq
|
statuses.delete(DomainStatus::SERVER_MANUAL_INZONE)
|
||||||
|
|
||||||
self.force_delete_at = nil
|
self.force_delete_at = nil
|
||||||
self.statuses_backup = []
|
|
||||||
save(validate: false)
|
save(validate: false)
|
||||||
end
|
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
|
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