mirror of
https://github.com/internetee/registry.git
synced 2025-08-04 17:01:44 +02:00
commit
c8d8b1f9eb
42 changed files with 589 additions and 221 deletions
|
@ -10,5 +10,10 @@ FactoryGirl.define do
|
|||
domain.admin_domain_contacts << FactoryGirl.build(:admin_domain_contact)
|
||||
domain.tech_domain_contacts << FactoryGirl.build(:tech_domain_contact)
|
||||
end
|
||||
|
||||
factory :domain_without_force_delete do
|
||||
force_delete_time nil
|
||||
statuses []
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
33
spec/features/admin/domains/force_delete_spec.rb
Normal file
33
spec/features/admin/domains/force_delete_spec.rb
Normal file
|
@ -0,0 +1,33 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.feature 'Force delete' do
|
||||
context 'when domain has no force delete procedure' do
|
||||
given!(:domain) { create(:domain_without_force_delete) }
|
||||
|
||||
scenario 'schedule' do
|
||||
sign_in_to_admin_area
|
||||
|
||||
visit edit_admin_domain_url(domain)
|
||||
click_link_or_button 'Force delete domain'
|
||||
|
||||
expect(page).to have_text('Force delete procedure has been scheduled')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when domain has force delete procedure' do
|
||||
given!(:domain) { create(:domain_without_force_delete) }
|
||||
|
||||
background do
|
||||
domain.schedule_force_delete
|
||||
end
|
||||
|
||||
scenario 'cancel' do
|
||||
sign_in_to_admin_area
|
||||
|
||||
visit edit_admin_domain_url(domain)
|
||||
click_link_or_button 'Cancel force delete'
|
||||
|
||||
expect(page).to have_text('Force delete procedure has been cancelled')
|
||||
end
|
||||
end
|
||||
end
|
|
@ -17,7 +17,8 @@ RSpec.describe DomainDeleteForcedEmailJob do
|
|||
|
||||
after :example do
|
||||
domain_id = 1
|
||||
described_class.enqueue(domain_id)
|
||||
template_name = 'removed_company'
|
||||
described_class.enqueue(domain_id, template_name)
|
||||
end
|
||||
|
||||
it 'creates log record' do
|
||||
|
@ -32,7 +33,8 @@ RSpec.describe DomainDeleteForcedEmailJob do
|
|||
it 'sends email' do
|
||||
expect(DomainDeleteMailer).to receive(:forced).with(domain: domain,
|
||||
registrar: 'registrar',
|
||||
registrant: 'registrant')
|
||||
registrant: 'registrant',
|
||||
template_name: 'removed_company')
|
||||
.and_return(message)
|
||||
expect(message).to receive(:deliver_now)
|
||||
end
|
||||
|
|
|
@ -48,12 +48,16 @@ RSpec.describe DomainDeleteMailer do
|
|||
|
||||
describe '#forced' do
|
||||
let(:domain) { instance_spy(Domain, name: 'test.com') }
|
||||
let(:registrant) { instance_spy(Registrant) }
|
||||
let(:template_name) { 'removed_company' }
|
||||
|
||||
let(:domain_presenter) { instance_spy(DomainPresenter) }
|
||||
let(:registrar_presenter) { instance_spy(RegistrarPresenter) }
|
||||
let(:registrant_presenter) { instance_spy(RegistrantPresenter) }
|
||||
subject(:message) { described_class.forced(domain: domain,
|
||||
registrar: 'registrar',
|
||||
registrant: 'registrant')
|
||||
registrant: registrant,
|
||||
template_name: template_name)
|
||||
}
|
||||
|
||||
before :example do
|
||||
|
@ -75,8 +79,28 @@ RSpec.describe DomainDeleteMailer do
|
|||
expect(message.subject).to eq('Kustutusmenetluse teade')
|
||||
end
|
||||
|
||||
it 'sends message' do
|
||||
expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1)
|
||||
context 'when template is :death' do
|
||||
let(:template_name) { 'death' }
|
||||
|
||||
it 'sends message' do
|
||||
expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when registrant is private entity' do
|
||||
let(:registrant) { build_stubbed(:registrant_private_entity) }
|
||||
|
||||
it 'sends message' do
|
||||
expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when registrant is legal entity' do
|
||||
let(:registrant) { build_stubbed(:registrant_legal_entity) }
|
||||
|
||||
it 'sends message' do
|
||||
expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
98
spec/models/concerns/domain/force_delete_spec.rb
Normal file
98
spec/models/concerns/domain/force_delete_spec.rb
Normal file
|
@ -0,0 +1,98 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Domain do
|
||||
it { is_expected.to alias_attribute(:force_delete_time, :force_delete_at) }
|
||||
|
||||
before :example do
|
||||
Fabricate(:zonefile_setting, origin: 'ee')
|
||||
end
|
||||
|
||||
it 'should set force delete time' do
|
||||
domain = Fabricate(:domain)
|
||||
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
|
|
@ -481,4 +481,18 @@ RSpec.describe Contact, db: false do
|
|||
specify { expect(reg_no).to be_nil }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#id_code' do
|
||||
context 'when contact is private entity' do
|
||||
let(:contact) { FactoryGirl.build_stubbed(:contact_private_entity, ident: '1234') }
|
||||
|
||||
specify { expect(contact.id_code).to eq('1234') }
|
||||
end
|
||||
|
||||
context 'when contact is legal entity' do
|
||||
let(:contact) { FactoryGirl.build_stubbed(:contact_legal_entity, ident: '1234') }
|
||||
|
||||
specify { expect(contact.id_code).to be_nil }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -182,98 +182,6 @@ RSpec.describe Domain do
|
|||
domain.statuses.include?(DomainStatus::SERVER_HOLD).should == false
|
||||
end
|
||||
|
||||
it 'should set force delete time' do
|
||||
@domain.statuses = ['ok']
|
||||
@domain.set_force_delete
|
||||
|
||||
@domain.statuses.should match_array([
|
||||
"serverForceDelete",
|
||||
"pendingDelete",
|
||||
"serverManualInzone",
|
||||
"serverRenewProhibited",
|
||||
"serverTransferProhibited",
|
||||
"serverUpdateProhibited"
|
||||
])
|
||||
|
||||
fda = Time.zone.now + Setting.redemption_grace_period.days
|
||||
|
||||
@domain.registrar.messages.count.should == 1
|
||||
m = @domain.registrar.messages.first
|
||||
m.body.should == "Force delete set on domain #{@domain.name}"
|
||||
|
||||
@domain.unset_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.set_force_delete
|
||||
|
||||
@domain.statuses.should match_array([
|
||||
"clientHold",
|
||||
"deleteCandidate",
|
||||
"expired",
|
||||
"serverForceDelete",
|
||||
"pendingDelete",
|
||||
"serverHold",
|
||||
"serverRenewProhibited",
|
||||
"serverTransferProhibited",
|
||||
"serverUpdateProhibited"
|
||||
])
|
||||
|
||||
@domain.unset_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
|
||||
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.set_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.valid?
|
||||
@domain.pending_update_prohibited?.should be false
|
||||
@domain.update_prohibited?.should be false
|
||||
@domain.set_force_delete
|
||||
@domain.pending_update_prohibited?.should be true
|
||||
@domain.update_prohibited?.should be true
|
||||
end
|
||||
|
||||
context 'with time period settings' do
|
||||
before :example do
|
||||
@save_days_to_renew = Setting.days_to_renew_domain_before_expire
|
||||
|
@ -302,7 +210,7 @@ RSpec.describe Domain do
|
|||
|
||||
it 'should not allow to renew after force delete' do
|
||||
Setting.redemption_grace_period = 1
|
||||
@domain.set_force_delete
|
||||
@domain.schedule_force_delete
|
||||
@domain.renewable?.should be false
|
||||
end
|
||||
end
|
||||
|
@ -327,7 +235,7 @@ RSpec.describe Domain do
|
|||
|
||||
it 'should not allow to renew after force delete' do
|
||||
Setting.redemption_grace_period = 1
|
||||
@domain.set_force_delete
|
||||
@domain.schedule_force_delete
|
||||
@domain.renewable?.should be false
|
||||
end
|
||||
end
|
||||
|
@ -700,7 +608,6 @@ end
|
|||
RSpec.describe Domain, db: false do
|
||||
it { is_expected.to alias_attribute(:on_hold_time, :outzone_at) }
|
||||
it { is_expected.to alias_attribute(:delete_time, :delete_at) }
|
||||
it { is_expected.to alias_attribute(:force_delete_time, :force_delete_at) }
|
||||
it { is_expected.to alias_attribute(:outzone_time, :outzone_at) }
|
||||
|
||||
describe 'nameserver validation', db: true do
|
||||
|
|
|
@ -114,6 +114,40 @@ RSpec.describe DomainPresenter do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#force_delete_toggle_btn' do
|
||||
let(:domain) { build_stubbed(:domain) }
|
||||
|
||||
context 'when force delete is not scheduled' do
|
||||
before :example do
|
||||
expect(domain).to receive(:force_delete_scheduled?).and_return(false)
|
||||
end
|
||||
|
||||
it 'returns schedule button' do
|
||||
html = view.content_tag(:a, 'Schedule force delete',
|
||||
class: 'btn btn-danger',
|
||||
data: {
|
||||
toggle: 'modal',
|
||||
target: '.domain-edit-force-delete-dialog',
|
||||
})
|
||||
expect(presenter.force_delete_toggle_btn).to eq(html)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when force delete is scheduled' do
|
||||
before :example do
|
||||
expect(domain).to receive(:force_delete_scheduled?).and_return(true)
|
||||
end
|
||||
|
||||
it 'returns cancel button' do
|
||||
html = link_to('Cancel force delete',
|
||||
view.cancel_force_delete_admin_domain_path(domain),
|
||||
method: :patch,
|
||||
data: { confirm: 'Are you sure you want cancel force delete procedure?' },
|
||||
class: 'btn btn-primary')
|
||||
expect(presenter.force_delete_toggle_btn).to eq(html)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
domain_delegatable_attributes = %i(
|
||||
name
|
||||
|
|
|
@ -11,6 +11,7 @@ RSpec.describe RegistrantPresenter do
|
|||
priv?
|
||||
street
|
||||
city
|
||||
id_code
|
||||
)
|
||||
|
||||
registrant_delegate_attributes.each do |attribute_name|
|
||||
|
|
13
spec/routing/admin/domains_routing_spec.rb
Normal file
13
spec/routing/admin/domains_routing_spec.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Admin::DomainsController do
|
||||
describe 'routing' do
|
||||
it 'routes to #schedule_force_delete' do
|
||||
expect(patch: '/admin/domains/1/schedule_force_delete').to route_to('admin/domains#schedule_force_delete', id: '1')
|
||||
end
|
||||
|
||||
it 'routes to #cancel_force_delete' do
|
||||
expect(patch: '/admin/domains/1/cancel_force_delete').to route_to('admin/domains#cancel_force_delete', id: '1')
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,5 +1,14 @@
|
|||
module Features
|
||||
module SessionHelpers
|
||||
def sign_in_to_admin_area(user: FactoryGirl.create(:admin_user))
|
||||
visit admin_login_url
|
||||
|
||||
fill_in 'admin_user[username]', with: user.username
|
||||
fill_in 'admin_user[password]', with: user.password
|
||||
|
||||
click_button 'Log in'
|
||||
end
|
||||
|
||||
def sign_in_to_registrar_area(user: FactoryGirl.create(:api_user))
|
||||
visit registrar_login_url
|
||||
|
||||
|
|
22
spec/views/admin/domains/edit.html.erb_spec.rb
Normal file
22
spec/views/admin/domains/edit.html.erb_spec.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'admin/domains/edit' do
|
||||
let(:domain) { build_stubbed(:domain) }
|
||||
let(:domain_presenter) { DomainPresenter.new(domain: domain, view: view) }
|
||||
|
||||
before :example do
|
||||
allow(DomainPresenter).to receive(:new).and_return(domain_presenter)
|
||||
allow(view).to receive(:force_delete_templates)
|
||||
|
||||
assign(:domain, domain)
|
||||
|
||||
stub_template '_form' => ''
|
||||
stub_template '_force_delete_dialog' => ''
|
||||
end
|
||||
|
||||
it 'has force_delete_toggle_btn' do
|
||||
expect(domain_presenter).to receive(:force_delete_toggle_btn).and_return('force_delete_toggle_btn')
|
||||
render
|
||||
expect(rendered).to have_content('force_delete_toggle_btn')
|
||||
end
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
require 'rails_helper'
|
||||
require_relative 'forced_shared'
|
||||
require_relative 'removed_company'
|
||||
|
||||
RSpec.describe 'mailers/domain_delete_mailer/forced.html.erb' do
|
||||
RSpec.describe 'mailers/domain_delete_mailer/forced/removed_company.html.erb' do
|
||||
before :example do
|
||||
stub_template 'mailers/shared/registrar/_registrar.et.html' => 'test registrar estonian'
|
||||
stub_template 'mailers/shared/registrar/_registrar.en.html' => 'test registrar english'
|
|
@ -1,7 +1,7 @@
|
|||
require 'rails_helper'
|
||||
require_relative 'forced_shared'
|
||||
require_relative 'removed_company'
|
||||
|
||||
RSpec.describe 'mailers/domain_delete_mailer/forced.text.erb' do
|
||||
RSpec.describe 'mailers/domain_delete_mailer/forced/removed_company.text.erb' do
|
||||
before :example do
|
||||
stub_template 'mailers/shared/registrar/_registrar.et.text' => 'test registrar estonian'
|
||||
stub_template 'mailers/shared/registrar/_registrar.en.text' => 'test registrar english'
|
Loading…
Add table
Add a link
Reference in a new issue