internetee-registry/spec/epp/contact_spec.rb
2014-08-05 16:55:42 +03:00

102 lines
3.5 KiB
Ruby

require 'rails_helper'
describe 'EPP Contact', epp: true do
let(:server) { Epp::Server.new({server: 'localhost', tag: 'gitlab', password: 'ghyt9e4fu', port: 701}) }
context 'with valid user' do
before(:each) { Fabricate(:epp_user) }
# incomplete
it 'creates a contact' do
response = epp_request('contacts/create.xml')
expect(response[:result_code]).to eq('1000')
expect(response[:msg]).to eq('Command completed successfully')
expect(response[:clTRID]).to eq('ABC-12345')
expect(Contact.first.created_by_id).to be 1
expect(Contact.first.updated_by_id).to be nil
expect(Contact.count).to eq(1)
expect(Contact.first.org_name).to eq('Example Inc.')
end
it 'updates a contact with same ident', pending: true do
pending 'fixing this as soon as contact#update is done'
Fabricate(:contact)
response = epp_request('contacts/create.xml')
expect(response[:result_code]).to eq('1000')
expect(response[:msg]).to eq('Command completed successfully')
expect(response[:clTRID]).to eq('ABC-12345')
expect(Contact.first.name).to eq("John Doe")
expect(Contact.first.ident_type).to eq("op")
expect(Contact.first.updated_by_id).to be 1
#nil because we fabricate, hence stamping in controller won't happen
expect(Contact.first.created_by_id).to be nil
expect(Contact.count).to eq(1)
end
#TODO tests for missing/invalid/etc ident
it 'deletes contact' do
Fabricate(:contact)
response = epp_request('contacts/delete.xml')
expect(response[:result_code]).to eq('1000')
expect(response[:msg]).to eq('Command completed successfully')
expect(response[:clTRID]).to eq('ABC-12345')
expect(Contact.count).to eq(0)
end
it 'deletes an nil object' do
response = epp_request('contacts/delete.xml')
expect(response[:result_code]).to eq('2303')
expect(response[:msg]).to eq('Object does not exist')
end
it 'checks contacts' do
Fabricate(:contact)
Fabricate(:contact, id:'sh8914')
response = epp_request('contacts/check.xml')
expect(response[:result_code]).to eq('1000')
expect(response[:msg]).to eq('Command completed successfully')
ids = response[:parsed].css('resData chkData id')
expect(ids[0].attributes['avail'].text).to eq('0')
expect(ids[1].attributes['avail'].text).to eq('1')
expect(ids[0].text).to eq('sh8913')
expect(ids[1].text).to eq('sh8914')
end
it 'returns error when object does not exist' do
response = epp_request('contacts/info.xml')
expect(response[:result_code]).to eq('2303')
expect(response[:msg]).to eq('Object does not exist')
end
it 'returns info about contact' do
Fabricate(:contact, name: "Johnny Awesome", created_by_id: '1')
Fabricate(:address)
response = epp_request('contacts/info.xml')
contact = response[:parsed].css('resData chkData')
expect(response[:result_code]).to eq('1000')
expect(response[:msg]).to eq('Command completed successfully')
expect(contact.css('name').first.text).to eq('Johnny Awesome')
end
it 'it doesn\'t display unassociated object' do
Fabricate(:contact, name:"Johnny Awesome", created_by_id: '240')
Fabricate(:epp_user, id: 240)
response = epp_request('contacts/info.xml')
expect(response[:result_code]).to eq('2201')
expect(response[:msg]).to eq('Authorization error')
end
end
end