Refactor poll specs

This commit is contained in:
Martin Lensment 2015-01-26 16:10:57 +02:00
parent bfb8670233
commit 7676b76df8

View file

@ -3,157 +3,157 @@ require 'rails_helper'
describe 'EPP Poll', epp: true do describe 'EPP Poll', epp: true do
let(:server_zone) { Epp::Server.new({ server: 'localhost', tag: 'zone', password: 'ghyt9e4fu', port: 701 }) } 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(:server_elkdata) { Epp::Server.new({ server: 'localhost', tag: 'elkdata', password: 'ghyt9e4fu', port: 701 }) }
let(:elkdata) { Fabricate(:registrar, { name: 'Elkdata', reg_no: '123' }) }
let(:zone) { Fabricate(:registrar) }
let(:epp_xml) { EppXml::Session.new } let(:epp_xml) { EppXml::Session.new }
before(:each) { create_settings } before(:each) { create_settings }
context 'with valid user' do before(:all) do
before(:each) do @elkdata = Fabricate(:registrar, { name: 'Elkdata', reg_no: '123' })
Fabricate(:epp_user, username: 'zone', registrar: zone) @zone = Fabricate(:registrar)
Fabricate(:epp_user, username: 'elkdata', registrar: elkdata) Fabricate(:epp_user, username: 'zone', registrar: @zone)
end Fabricate(:epp_user, username: 'elkdata', registrar: @elkdata)
it 'returns no messages in poll' do @uniq_no = proc { @i ||= 0; @i += 1 }
response = epp_request(epp_xml.poll, :xml) end
expect(response[:msg]).to eq('Command completed successfully; no messages') it 'returns no messages in poll' do
expect(response[:result_code]).to eq('1300') response = epp_request(epp_xml.poll, :xml)
log = ApiLog::EppLog.all expect(response[:msg]).to eq('Command completed successfully; no messages')
expect(response[:result_code]).to eq('1300')
expect(log.length).to eq(4) log = ApiLog::EppLog.all
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.length).to eq(4)
expect(log[1].request_successful).to eq(true) expect(log[0].request_command).to eq('hello')
expect(log[1].api_user_name).to eq('zone') expect(log[0].request_successful).to eq(true)
expect(log[1].api_user_registrar).to eq('Registrar OÜ')
expect(log[2].request_command).to eq('poll') expect(log[1].request_command).to eq('login')
expect(log[2].request_object).to eq('poll') expect(log[1].request_successful).to eq(true)
expect(log[2].request_successful).to eq(true) expect(log[1].api_user_name).to eq('zone')
expect(log[2].api_user_name).to eq('zone') expect(log[1].api_user_registrar).to eq('Registrar OÜ')
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[2].request_command).to eq('poll')
expect(log[3].request_successful).to eq(true) expect(log[2].request_object).to eq('poll')
expect(log[3].api_user_name).to eq('zone') expect(log[2].request_successful).to eq(true)
expect(log[3].api_user_registrar).to eq('Registrar OÜ') expect(log[2].api_user_name).to eq('zone')
end 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
it 'queues and dequeues messages' do expect(log[3].request_command).to eq('logout')
msg = zone.messages.create({ body: 'Balance low.' }) 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Ü')
end
response = epp_request(epp_xml.poll, :xml, :elkdata) it 'queues and dequeues messages' do
expect(response[:msg]).to eq('Command completed successfully; no messages') msg = @zone.messages.create({ body: 'Balance low.' })
expect(response[:result_code]).to eq('1300')
response = epp_request(epp_xml.poll, :xml, :zone) response = epp_request(epp_xml.poll, :xml, :elkdata)
expect(response[:msg]).to eq('Command completed successfully; ack to dequeue') expect(response[:msg]).to eq('Command completed successfully; no messages')
expect(response[:result_code]).to eq('1301') expect(response[:result_code]).to eq('1300')
msg_q = response[:parsed].css('msgQ')
expect(msg_q.css('msg').text).to eq('Balance low.') response = epp_request(epp_xml.poll, :xml, :zone)
expect(msg_q.first['count']).to eq('1') expect(response[:msg]).to eq('Command completed successfully; ack to dequeue')
expect(msg_q.first['id']).to eq(msg.id.to_s) expect(response[:result_code]).to eq('1301')
msg_q = response[:parsed].css('msgQ')
xml = epp_xml.poll(poll: { expect(msg_q.css('msg').text).to eq('Balance low.')
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] } expect(msg_q.first['count']).to eq('1')
}) expect(msg_q.first['id']).to eq(msg.id.to_s)
response = epp_request(xml, :xml, :elkdata) xml = epp_xml.poll(poll: {
expect(response[:results][0][:msg]).to eq('Message was not found') value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
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_request(xml, :xml, :elkdata)
expect(response[:msg]).to eq('Command completed successfully') expect(response[:results][0][:msg]).to eq('Message was not found')
msg_q = response[:parsed].css('msgQ') expect(response[:results][0][:result_code]).to eq('2303')
expect(msg_q.first['id']).to_not be_blank expect(response[:results][0][:value]).to eq(msg_q.first['id'])
expect(msg_q.first['count']).to eq('0')
response = epp_request(xml, :xml, :zone) response = epp_request(xml, :xml, :zone)
expect(response[:results][0][:msg]).to eq('Message was not found') expect(response[:msg]).to eq('Command completed successfully')
expect(response[:results][0][:result_code]).to eq('2303') msg_q = response[:parsed].css('msgQ')
expect(response[:results][0][:value]).to eq(msg_q.first['id']) expect(msg_q.first['id']).to_not be_blank
end expect(msg_q.first['count']).to eq('0')
it 'returns an error on incorrect op' do response = epp_request(xml, :xml, :zone)
xml = epp_xml.poll(poll: { expect(response[:results][0][:msg]).to eq('Message was not found')
value: '', attrs: { op: 'bla' } expect(response[:results][0][:result_code]).to eq('2303')
}) expect(response[:results][0][:value]).to eq(msg_q.first['id'])
end
response = epp_request(xml, :xml, :zone) it 'returns an error on incorrect op' do
expect(response[:msg]).to eq('Attribute op is invalid') xml = epp_xml.poll(poll: {
end value: '', attrs: { op: 'bla' }
})
it 'dequeues multiple messages' do response = epp_request(xml, :xml, :zone)
zone.messages.create({ body: 'Balance low.' }) expect(response[:msg]).to eq('Attribute op is invalid')
zone.messages.create({ body: 'Something.' }) end
zone.messages.create({ body: 'Smth else.' })
response = epp_request(epp_xml.poll, :xml, :zone) it 'dequeues multiple messages' do
expect(response[:msg]).to eq('Command completed successfully; ack to dequeue') @zone.messages.create({ body: 'Balance low.' })
expect(response[:result_code]).to eq('1301') @zone.messages.create({ body: 'Something.' })
msg_q = response[:parsed].css('msgQ') @zone.messages.create({ body: 'Smth else.' })
expect(msg_q.css('msg').text).to eq('Smth else.') response = epp_request(epp_xml.poll, :xml, :zone)
expect(msg_q.first['count']).to eq('3') expect(response[:msg]).to eq('Command completed successfully; ack to dequeue')
expect(response[:result_code]).to eq('1301')
msg_q = response[:parsed].css('msgQ')
xml = epp_xml.poll(poll: { expect(msg_q.css('msg').text).to eq('Smth else.')
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] } expect(msg_q.first['count']).to eq('3')
})
response = epp_request(xml, :xml, :zone) xml = epp_xml.poll(poll: {
expect(response[:msg]).to eq('Command completed successfully') value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
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_request(xml, :xml, :zone)
expect(response[:msg]).to eq('Command completed successfully; ack to dequeue') expect(response[:msg]).to eq('Command completed successfully')
expect(response[:result_code]).to eq('1301') msg_q = response[:parsed].css('msgQ')
msg_q = response[:parsed].css('msgQ') expect(msg_q.first['id']).to_not be_blank
expect(msg_q.first['count']).to eq('2')
expect(msg_q.css('msg').text).to eq('Something.') response = epp_request(epp_xml.poll, :xml, :zone)
expect(msg_q.first['count']).to eq('2') expect(response[:msg]).to eq('Command completed successfully; ack to dequeue')
expect(response[:result_code]).to eq('1301')
msg_q = response[:parsed].css('msgQ')
xml = epp_xml.poll(poll: { expect(msg_q.css('msg').text).to eq('Something.')
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] } expect(msg_q.first['count']).to eq('2')
})
response = epp_request(xml, :xml, :zone) xml = epp_xml.poll(poll: {
expect(response[:msg]).to eq('Command completed successfully') value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
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_request(xml, :xml, :zone)
expect(response[:msg]).to eq('Command completed successfully; ack to dequeue') expect(response[:msg]).to eq('Command completed successfully')
expect(response[:result_code]).to eq('1301') msg_q = response[:parsed].css('msgQ')
msg_q = response[:parsed].css('msgQ') expect(msg_q.first['id']).to_not be_blank
expect(msg_q.first['count']).to eq('1')
expect(msg_q.css('msg').text).to eq('Balance low.') response = epp_request(epp_xml.poll, :xml, :zone)
expect(msg_q.first['count']).to eq('1') expect(response[:msg]).to eq('Command completed successfully; ack to dequeue')
expect(response[:result_code]).to eq('1301')
msg_q = response[:parsed].css('msgQ')
xml = epp_xml.poll(poll: { expect(msg_q.css('msg').text).to eq('Balance low.')
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] } expect(msg_q.first['count']).to eq('1')
})
response = epp_request(xml, :xml, :zone) xml = epp_xml.poll(poll: {
expect(response[:msg]).to eq('Command completed successfully') value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
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_request(xml, :xml, :zone)
expect(response[:msg]).to eq('Command completed successfully; no messages') expect(response[:msg]).to eq('Command completed successfully')
expect(response[:result_code]).to eq('1300') msg_q = response[:parsed].css('msgQ')
end 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)
expect(response[:msg]).to eq('Command completed successfully; no messages')
expect(response[:result_code]).to eq('1300')
end end
end end