require 'rails_helper' # https://github.com/internetee/registry/issues/576 RSpec.describe 'EPP contact:update' do let(:ident) { contact.identifier } let(:request) { post '/epp/command/update', frame: request_xml } let(:request_xml) { <<-XML TEST test test XML } before do sign_in_to_epp_area end context 'when contact ident is valid' do let!(:contact) { create(:contact, code: 'TEST', ident: 'test', ident_type: 'priv', ident_country_code: 'US') } it 'does not update code' do expect { request; contact.reload }.to_not change { ident.code } end it 'does not update type' do expect { request; contact.reload }.to_not change { ident.type } end it 'does not update country code' do expect { request; contact.reload }.to_not change { ident.country_code } end specify do request message = 'Data management policy violation:' \ ' update of ident not allowed, please consider creating new contact object' expect(epp_response).to have_result(:data_management_policy_violation, message) end end context 'when contact ident is invalid' do let(:contact) { build(:contact, code: 'TEST', ident: 'test', ident_type: nil, ident_country_code: nil) } before do contact.save(validate: false) end context 'when submitted ident is the same as current one' do let(:request_xml) { <<-XML TEST test test XML } it 'does not update code' do expect { request; contact.reload }.to_not change { ident.code } end it 'updates type' do request contact.reload expect(ident.type).to eq('priv') end it 'updates country code' do request contact.reload expect(ident.country_code).to eq('US') end specify do request expect(epp_response).to have_result(:success) end end context 'when submitted ident is different from current one' do let(:request_xml) { <<-XML TEST test another-test XML } it 'does not update code' do expect { request; contact.reload }.to_not change { ident.code } end it 'does not update type' do expect { request; contact.reload }.to_not change { ident.type } end it 'does not update country code' do expect { request; contact.reload }.to_not change { ident.country_code } end specify do request message = 'Data management policy violation:' \ ' update of ident not allowed, please consider creating new contact object' expect(epp_response).to have_result(:data_management_policy_violation, message) end end end end