diff --git a/spec/requests/epp/domain/update/registrant_change/verified_spec.rb b/spec/requests/epp/domain/update/registrant_change/verified_spec.rb new file mode 100644 index 000000000..996fffccf --- /dev/null +++ b/spec/requests/epp/domain/update/registrant_change/verified_spec.rb @@ -0,0 +1,196 @@ +require 'rails_helper' + +RSpec.describe 'EPP domain:update' do + let(:request) { post '/epp/command/update', frame: request_xml } + let!(:registrant) { create(:registrant, code: 'old-code') } + let!(:domain) { create(:domain, name: 'test.com', registrant: registrant) } + let!(:new_registrant) { create(:registrant, code: 'new-code') } + + before :example do + sign_in_to_epp_area + end + + context 'when registrant change confirmation is enabled' do + before :example do + Setting.request_confrimation_on_registrant_change_enabled = true + end + + context 'when verified' do + let(:request_xml) { <<-XML + + + + + + test.com + + new-code + + + + + + #{valid_legal_document} + + + + + XML + } + + specify do + request + expect(response).to have_code_of(1000) + end + + it 'changes registrant' do + expect { request; domain.reload }.to change { domain.registrant_code }.from('old-code').to('new-code') + end + + it 'does not send confirmation email' do + expect { request }.to_not change { ActionMailer::Base.deliveries.count } + end + + it 'does not set PENDING_UPDATE status to domain' do + request + domain.reload + expect(domain.statuses).to_not include(DomainStatus::PENDING_UPDATE) + end + end + + context 'when not verified' do + let(:request_xml) { <<-XML + + + + + + test.com + + new-code + + + + + + #{valid_legal_document} + + + + + XML + } + + specify do + request + expect(response).to have_code_of(1001) + end + + it 'does not change registrant' do + expect { request; domain.reload }.to_not change { domain.registrant_code } + end + + it 'sends confirmation and notice emails' do + expect { request }.to change { ActionMailer::Base.deliveries.count }.by(2) + end + + it 'sets PENDING_UPDATE status to domain' do + request + domain.reload + expect(domain.statuses).to include(DomainStatus::PENDING_UPDATE) + end + end + end + + context 'when registrant change confirmation is disabled' do + before :example do + Setting.request_confrimation_on_registrant_change_enabled = false + end + + context 'when verified' do + let(:request_xml) { <<-XML + + + + + + test.com + + new-code + + + + + + #{valid_legal_document} + + + + + XML + } + + specify do + request + expect(response).to have_code_of(1000) + end + + it 'changes registrant' do + expect { request; domain.reload }.to change { domain.registrant_code }.from('old-code').to('new-code') + end + + it 'does not send confirmation email' do + expect { request }.to_not change { ActionMailer::Base.deliveries.count } + end + + it 'does not set PENDING_UPDATE status to domain' do + request + domain.reload + expect(domain.statuses).to_not include(DomainStatus::PENDING_UPDATE) + end + end + + context 'when not verified' do + let(:request_xml) { <<-XML + + + + + + test.com + + new-code + + + + + + #{valid_legal_document} + + + + + XML + } + + specify do + request + expect(response).to have_code_of(1000) + end + + it 'changes registrant' do + expect { request; domain.reload }.to change { domain.registrant_code }.from('old-code').to('new-code') + end + + it 'does not send confirmation email' do + expect { request }.to_not change { ActionMailer::Base.deliveries.count } + end + + it 'does not set PENDING_UPDATE status to domain' do + request + domain.reload + expect(domain.statuses).to_not include(DomainStatus::PENDING_UPDATE) + end + end + end +end