From 3583f416685e75d3f3ffc590c150c3ffa9f74aa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andres=20Keskk=C3=BCla?= Date: Thu, 14 Aug 2014 11:04:25 +0300 Subject: [PATCH] Remodeled contact specs to be clearer --- spec/epp/contact_spec.rb | 312 ++++++++++++++++++++------------------- 1 file changed, 159 insertions(+), 153 deletions(-) diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index d0d8b8338..e6e9f367c 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -6,189 +6,195 @@ describe 'EPP Contact', epp: true do context 'with valid user' do before(:each) { Fabricate(:epp_user) } - #Tests for the new error system - it "doesn't create contact if request is invalid" do - response = epp_request(contact_create_xml( { authInfo: [false], addr: { cc: false, city: false } } ), :xml) + context 'create command' do + it "fails if request is invalid" do + response = epp_request(contact_create_xml( { authInfo: [false], addr: { cc: false, city: false } } ), :xml) - expect(response[:results][0][:result_code]).to eq('2003') - expect(response[:results][1][:result_code]).to eq('2003') - expect(response[:results][2][:result_code]).to eq('2003') + expect(response[:results][0][:result_code]).to eq('2003') + expect(response[:results][1][:result_code]).to eq('2003') + expect(response[:results][2][:result_code]).to eq('2003') - expect(response[:results][0][:msg]).to eq('Required parameter missing: city') - expect(response[:results][1][:msg]).to eq('Required parameter missing: cc') - expect(response[:results][2][:msg]).to eq('Required parameter missing: authInfo') - expect(response[:results].count).to eq 3 - end + expect(response[:results][0][:msg]).to eq('Required parameter missing: city') + expect(response[:results][1][:msg]).to eq('Required parameter missing: cc') + expect(response[:results][2][:msg]).to eq('Required parameter missing: authInfo') + expect(response[:results].count).to eq 3 + end - it "doesn't update contact if request is invalid" do - response = epp_request('contacts/update_missing_attr.xml') + it 'successfully creates a contact' do + response = epp_request(contact_create_xml, :xml) - expect(response[:results][0][:result_code]).to eq('2003') - expect(response[:results][0][:msg]).to eq('Required parameter missing: id') - expect(response[:results].count).to eq 1 - end + 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 - it "doesn't delete contact if request is invalid" do - response = epp_request('contacts/delete_missing_attr.xml') + expect(Contact.count).to eq(1) + expect(Contact.first.org_name).to eq('Example Inc.') - expect(response[:results][0][:result_code]).to eq('2003') - expect(response[:results][0][:msg]).to eq('Required parameter missing: id') - expect(response[:results].count).to eq 1 - end + expect(Contact.first.address.street).to eq('123 Example Dr.') + expect(Contact.first.address.street2).to eq('Suite 100') + expect(Contact.first.address.street3).to eq nil - it "doesn't check contact if request is invalid" do - response = epp_request(contact_check_xml( ids: [ false ] ), :xml) + end - expect(response[:results][0][:result_code]).to eq('2003') - expect(response[:results][0][:msg]).to eq('Required parameter missing: id') - expect(response[:results].count).to eq 1 - end + it 'returns result data upon success' do + response = epp_request(contact_create_xml, :xml) - it "doesn't display info if request invalid" do - response = epp_request('contacts/delete_missing_attr.xml') + expect(response[:result_code]).to eq('1000') + expect(response[:msg]).to eq('Command completed successfully') - expect(response[:results][0][:result_code]).to eq('2003') - expect(response[:results][0][:msg]).to eq('Required parameter missing: id') - expect(response[:results].count).to eq 1 - end + id = response[:parsed].css('resData creData id').first + crDate = response[:parsed].css('resData creData crDate').first - - # incomplete - it 'creates a contact' do - response = epp_request(contact_create_xml, :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.') - - expect(Contact.first.address.street).to eq('123 Example Dr.') - expect(Contact.first.address.street2).to eq('Suite 100') - expect(Contact.first.address.street3).to eq nil - - end - - it 'returns result data upon succesful contact creation' do - response = epp_request(contact_create_xml, :xml) - - expect(response[:result_code]).to eq('1000') - expect(response[:msg]).to eq('Command completed successfully') - - id = response[:parsed].css('resData creData id').first - crDate = response[:parsed].css('resData creData crDate').first - - expect(id.text).to eq('sh8013') - #5 seconds for what-ever weird lag reasons might happen - expect(crDate.text.to_time).to be_within(5).of(Time.now) + expect(id.text).to eq('sh8013') + #5 seconds for what-ever weird lag reasons might happen + expect(crDate.text.to_time).to be_within(5).of(Time.now) + end + + it 'does not create duplicate contact' do + Fabricate(:contact, code: 'sh8013') + + response = epp_request(contact_create_xml, :xml) + + expect(response[:result_code]).to eq('2302') + expect(response[:msg]).to eq('Contact id already exists') + + expect(Contact.count).to eq(1) + end end - it 'does not create duplicate contact' do - Fabricate(:contact, code: 'sh8013') - response = epp_request(contact_create_xml, :xml) + context 'update command' do + it "fails if request is invalid" do + response = epp_request('contacts/update_missing_attr.xml') + + expect(response[:results][0][:result_code]).to eq('2003') + expect(response[:results][0][:msg]).to eq('Required parameter missing: id') + expect(response[:results].count).to eq 1 + end + + it 'stamps updated_by succesfully' do + Fabricate(:contact, code: 'sh8013') + + expect(Contact.first.updated_by_id).to be nil + + response = epp_request('contacts/update.xml') + + expect(Contact.first.updated_by_id).to eq 1 + end + + it 'is succesful' do + Fabricate(:contact, created_by_id: 1, email: 'not_updated@test.test', code: 'sh8013') + response = epp_request('contacts/update.xml') + expect(response[:msg]).to eq('Command completed successfully') + expect(Contact.first.name).to eq('John Doe') + expect(Contact.first.email).to eq('jdoe@example.com') + end + + it 'returns phone and email error' do + Fabricate(:contact, created_by_id: 1, email: 'not_updated@test.test', code: 'sh8013') + response = epp_request('contacts/update_with_errors.xml') + + expect(response[:results][0][:result_code]).to eq('2005') + expect(response[:results][0][:msg]).to eq('Phone nr is invalid') + + expect(response[:results][1][:result_code]).to eq('2005') + expect(response[:results][1][:msg]).to eq('Email is invalid') + end + end - expect(response[:result_code]).to eq('2302') - expect(response[:msg]).to eq('Contact id already exists') - - expect(Contact.count).to eq(1) + context 'delete command' do + it "fails if request is invalid" do + response = epp_request('contacts/delete_missing_attr.xml') + + expect(response[:results][0][:result_code]).to eq('2003') + expect(response[:results][0][:msg]).to eq('Required parameter missing: id') + expect(response[:results].count).to eq 1 + end + + it 'deletes contact' do + Fabricate(:contact, code: "dwa1234") + 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 'returns error if obj doesnt exist' do + response = epp_request('contacts/delete.xml') + expect(response[:result_code]).to eq('2303') + expect(response[:msg]).to eq('Object does not exist') + end end - it 'stamps updated_by succesfully' do - Fabricate(:contact, code: 'sh8013') - expect(Contact.first.updated_by_id).to be nil + context 'check command' do + it "fails if request is invalid" do + response = epp_request(contact_check_xml( ids: [ false ] ), :xml) - response = epp_request('contacts/update.xml') + expect(response[:results][0][:result_code]).to eq('2003') + expect(response[:results][0][:msg]).to eq('Required parameter missing: id') + expect(response[:results].count).to eq 1 + end - expect(Contact.first.updated_by_id).to eq 1 + it 'returns info about contact' do + Fabricate(:contact, code: 'check-1234') + + response = epp_request(contact_check_xml( ids: [{ id: 'check-1234'}, { id: 'check-4321' }] ), :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('check-1234') + expect(ids[1].text).to eq('check-4321') + end end + + context 'info command' do + it "fails if request invalid" do + response = epp_request('contacts/delete_missing_attr.xml') - #TODO tests for missing/invalid/etc ident + expect(response[:results][0][:result_code]).to eq('2003') + expect(response[:results][0][:msg]).to eq('Required parameter missing: id') + expect(response[:results].count).to eq 1 + end - it 'deletes contact' do - Fabricate(:contact, code: "dwa1234") - 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') + 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') + expect(response[:results][0][:value]).to eq('info-4444') + end - expect(Contact.count).to eq(0) - end + it 'returns info about contact' do + Fabricate(:contact, name: "Johnny Awesome", created_by_id: '1', code: 'info-4444') + Fabricate(:address) - 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 + response = epp_request('contacts/info.xml') + contact = response[:parsed].css('resData chkData') - it 'checks contacts' do - Fabricate(:contact, code: 'check-1234') - - response = epp_request(contact_check_xml( ids: [{ id: 'check-1234'}, { id: 'check-4321' }] ), :xml) + 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') - expect(response[:result_code]).to eq('1000') - expect(response[:msg]).to eq('Command completed successfully') - ids = response[:parsed].css('resData chkData id') + end - expect(ids[0].attributes['avail'].text).to eq('0') - expect(ids[1].attributes['avail'].text).to eq('1') + it 'doesn\'t display unassociated object' do + Fabricate(:contact, name:"Johnny Awesome", created_by_id: '240', code: 'info-4444') + Fabricate(:epp_user, id: 240) - expect(ids[0].text).to eq('check-1234') - expect(ids[1].text).to eq('check-4321') - - 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') - expect(response[:results][0][:value]).to eq('info-4444') - end - - it 'returns info about contact' do - Fabricate(:contact, name: "Johnny Awesome", created_by_id: '1', code: 'info-4444') - 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', code: 'info-4444') - 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 - - it 'updates contact succesfully' do - Fabricate(:contact, created_by_id: 1, email: 'not_updated@test.test', code: 'sh8013') - response = epp_request('contacts/update.xml') - expect(response[:msg]).to eq('Command completed successfully') - expect(Contact.first.name).to eq('John Doe') - expect(Contact.first.email).to eq('jdoe@example.com') - end - - it 'returns phone and email error' do - Fabricate(:contact, created_by_id: 1, email: 'not_updated@test.test', code: 'sh8013') - response = epp_request('contacts/update_with_errors.xml') - - expect(response[:results][0][:result_code]).to eq('2005') - expect(response[:results][0][:msg]).to eq('Phone nr is invalid') - - expect(response[:results][1][:result_code]).to eq('2005') - expect(response[:results][1][:msg]).to eq('Email is invalid') + response = epp_request('contacts/info.xml') + expect(response[:result_code]).to eq('2201') + expect(response[:msg]).to eq('Authorization error') + end end end end