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