From f92d3088fba739e3f1c60ba50930fee9ddddade6 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 27 Jan 2015 11:46:39 +0200 Subject: [PATCH] Refactor poll to hold session --- spec/epp/poll_spec.rb | 92 +++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 47 deletions(-) diff --git a/spec/epp/poll_spec.rb b/spec/epp/poll_spec.rb index 82186f17e..ff74785a4 100644 --- a/spec/epp/poll_spec.rb +++ b/spec/epp/poll_spec.rb @@ -1,61 +1,56 @@ require 'rails_helper' describe 'EPP Poll', epp: true do - let(:server_zone) { Epp::Server.new({ server: 'localhost', tag: 'zone', password: 'ghyt9e4fu', port: 701 }) } - let(:server_elkdata) { Epp::Server.new({ server: 'localhost', tag: 'elkdata', password: 'ghyt9e4fu', port: 701 }) } let(:epp_xml) { EppXml::Session.new } - before(:each) { create_settings } + def registrar1 + @registrar1 ||= Registrar.where(reg_no: '12345678').first || Fabricate(:registrar) + end + + def registrar2 + @registrar2 ||= Fabricate(:registrar, { name: 'registrar2', reg_no: '123' }) + end before(:all) do - @elkdata = Fabricate(:registrar, { name: 'Elkdata', reg_no: '123' }) - @zone = Fabricate(:registrar) - Fabricate(:epp_user, username: 'zone', registrar: @zone) - Fabricate(:epp_user, username: 'elkdata', registrar: @elkdata) + Fabricate(:epp_user, username: 'registrar1', registrar: registrar1) + Fabricate(:epp_user, username: 'registrar2', registrar: registrar2) + + login_as :registrar1 @uniq_no = proc { @i ||= 0; @i += 1 } + + create_settings end it 'returns no messages in poll' do ApiLog::EppLog.delete_all - response = epp_request(epp_xml.poll, :xml) + response = epp_plain_request(epp_xml.poll, :xml) expect(response[:msg]).to eq('Command completed successfully; no messages') expect(response[:result_code]).to eq('1300') - log = ApiLog::EppLog.all + log = ApiLog::EppLog.last - expect(log.length).to eq(4) - expect(log[0].request_command).to eq('hello') - expect(log[0].request_successful).to eq(true) - - expect(log[1].request_command).to eq('login') - expect(log[1].request_successful).to eq(true) - expect(log[1].api_user_name).to eq('zone') - expect(log[1].api_user_registrar).to eq('Registrar OÜ') - - expect(log[2].request_command).to eq('poll') - expect(log[2].request_object).to eq('poll') - expect(log[2].request_successful).to eq(true) - expect(log[2].api_user_name).to eq('zone') - expect(log[2].api_user_registrar).to eq('Registrar OÜ') - expect(log[2].request).not_to be_blank - expect(log[2].response).not_to be_blank - - expect(log[3].request_command).to eq('logout') - expect(log[3].request_successful).to eq(true) - expect(log[3].api_user_name).to eq('zone') - expect(log[3].api_user_registrar).to eq('Registrar OÜ') + expect(log.request_command).to eq('poll') + expect(log.request_object).to eq('poll') + expect(log.request_successful).to eq(true) + expect(log.api_user_name).to eq('registrar1') + expect(log.api_user_registrar).to eq('Registrar OÜ') + expect(log.request).not_to be_blank + expect(log.response).not_to be_blank end it 'queues and dequeues messages' do - msg = @zone.messages.create({ body: 'Balance low.' }) + msg = registrar1.messages.create({ body: 'Balance low.' }) + + response = login_as :registrar2 do + epp_plain_request(epp_xml.poll, :xml) + end - response = epp_request(epp_xml.poll, :xml, :elkdata) expect(response[:msg]).to eq('Command completed successfully; no messages') expect(response[:result_code]).to eq('1300') - response = epp_request(epp_xml.poll, :xml, :zone) + response = epp_plain_request(epp_xml.poll, :xml) expect(response[:msg]).to eq('Command completed successfully; ack to dequeue') expect(response[:result_code]).to eq('1301') msg_q = response[:parsed].css('msgQ') @@ -68,18 +63,21 @@ describe 'EPP Poll', epp: true do value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] } }) - response = epp_request(xml, :xml, :elkdata) + response = login_as :registrar2 do + epp_plain_request(xml, :xml) + end + expect(response[:results][0][:msg]).to eq('Message was not found') expect(response[:results][0][:result_code]).to eq('2303') expect(response[:results][0][:value]).to eq(msg_q.first['id']) - response = epp_request(xml, :xml, :zone) + response = epp_plain_request(xml, :xml) expect(response[:msg]).to eq('Command completed successfully') msg_q = response[:parsed].css('msgQ') expect(msg_q.first['id']).to_not be_blank expect(msg_q.first['count']).to eq('0') - response = epp_request(xml, :xml, :zone) + response = epp_plain_request(xml, :xml) expect(response[:results][0][:msg]).to eq('Message was not found') expect(response[:results][0][:result_code]).to eq('2303') expect(response[:results][0][:value]).to eq(msg_q.first['id']) @@ -90,16 +88,16 @@ describe 'EPP Poll', epp: true do value: '', attrs: { op: 'bla' } }) - response = epp_request(xml, :xml, :zone) + response = epp_plain_request(xml, :xml) expect(response[:msg]).to eq('Attribute op is invalid') end it 'dequeues multiple messages' do - @zone.messages.create({ body: 'Balance low.' }) - @zone.messages.create({ body: 'Something.' }) - @zone.messages.create({ body: 'Smth else.' }) + registrar1.messages.create({ body: 'Balance low.' }) + registrar1.messages.create({ body: 'Something.' }) + registrar1.messages.create({ body: 'Smth else.' }) - response = epp_request(epp_xml.poll, :xml, :zone) + response = epp_plain_request(epp_xml.poll, :xml) expect(response[:msg]).to eq('Command completed successfully; ack to dequeue') expect(response[:result_code]).to eq('1301') msg_q = response[:parsed].css('msgQ') @@ -111,13 +109,13 @@ describe 'EPP Poll', epp: true do value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] } }) - response = epp_request(xml, :xml, :zone) + response = epp_plain_request(xml, :xml) expect(response[:msg]).to eq('Command completed successfully') msg_q = response[:parsed].css('msgQ') expect(msg_q.first['id']).to_not be_blank expect(msg_q.first['count']).to eq('2') - response = epp_request(epp_xml.poll, :xml, :zone) + response = epp_plain_request(epp_xml.poll, :xml) expect(response[:msg]).to eq('Command completed successfully; ack to dequeue') expect(response[:result_code]).to eq('1301') msg_q = response[:parsed].css('msgQ') @@ -129,13 +127,13 @@ describe 'EPP Poll', epp: true do value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] } }) - response = epp_request(xml, :xml, :zone) + response = epp_plain_request(xml, :xml) expect(response[:msg]).to eq('Command completed successfully') msg_q = response[:parsed].css('msgQ') expect(msg_q.first['id']).to_not be_blank expect(msg_q.first['count']).to eq('1') - response = epp_request(epp_xml.poll, :xml, :zone) + response = epp_plain_request(epp_xml.poll, :xml) expect(response[:msg]).to eq('Command completed successfully; ack to dequeue') expect(response[:result_code]).to eq('1301') msg_q = response[:parsed].css('msgQ') @@ -147,13 +145,13 @@ describe 'EPP Poll', epp: true do value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] } }) - response = epp_request(xml, :xml, :zone) + response = epp_plain_request(xml, :xml) expect(response[:msg]).to eq('Command completed successfully') msg_q = response[:parsed].css('msgQ') expect(msg_q.first['id']).to_not be_blank expect(msg_q.first['count']).to eq('0') - response = epp_request(epp_xml.poll, :xml, :zone) + response = epp_plain_request(epp_xml.poll, :xml) expect(response[:msg]).to eq('Command completed successfully; no messages') expect(response[:result_code]).to eq('1300') end