Merge pull request #352 from internetee/registry-268

Registry 268
This commit is contained in:
Timo Võhmar 2017-01-23 16:05:28 +02:00 committed by GitHub
commit c8d8b1f9eb
42 changed files with 589 additions and 221 deletions

View file

@ -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

View 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

View file

@ -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

View file

@ -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

View 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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -11,6 +11,7 @@ RSpec.describe RegistrantPresenter do
priv?
street
city
id_code
)
registrant_delegate_attributes.each do |attribute_name|

View 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

View file

@ -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

View 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

View file

@ -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'

View file

@ -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'