From 00f3a01e5c999513d469d59852ec5e690a07eca7 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 22 Aug 2018 19:32:12 +0300 Subject: [PATCH] Define message order explicitly, improve EPP poll tests --- app/controllers/epp/polls_controller.rb | 2 +- test/fixtures/messages.yml | 8 ++- test/integration/epp/poll_test.rb | 76 +++++++++++++++++++++---- test/models/message_test.rb | 8 ++- 4 files changed, 81 insertions(+), 13 deletions(-) diff --git a/app/controllers/epp/polls_controller.rb b/app/controllers/epp/polls_controller.rb index 44f8afdc1..cb1f3d2f2 100644 --- a/app/controllers/epp/polls_controller.rb +++ b/app/controllers/epp/polls_controller.rb @@ -9,7 +9,7 @@ class Epp::PollsController < EppController private def req_poll - @message = current_user.queued_messages.last + @message = current_user.queued_messages.order('created_at DESC').take render_epp_response 'epp/poll/poll_no_messages' and return unless @message if @message.attached_obj_type && @message.attached_obj_id diff --git a/test/fixtures/messages.yml b/test/fixtures/messages.yml index a60ee762e..c20a4b023 100644 --- a/test/fixtures/messages.yml +++ b/test/fixtures/messages.yml @@ -2,9 +2,15 @@ greeting: body: Welcome! queued: true registrar: bestnames + created_at: <%= Time.zone.parse('2010-07-04') %> domain_deleted: body: Your domain has been deleted queued: true registrar: bestnames - created_at: <%= Time.zone.parse('2010-07-05') %> \ No newline at end of file + created_at: <%= Time.zone.parse('2010-07-05') %> + +farewell: + body: Good bye! + queued: true + registrar: goodnames \ No newline at end of file diff --git a/test/integration/epp/poll_test.rb b/test/integration/epp/poll_test.rb index 5a9f0deec..acd75167d 100644 --- a/test/integration/epp/poll_test.rb +++ b/test/integration/epp/poll_test.rb @@ -24,17 +24,11 @@ class EppPollTest < ApplicationIntegrationTest assert_equal 'Your domain has been deleted', response_xml.at_css('msgQ msg').text end - def test_no_messages + def test_no_messages_in_queue registrars(:bestnames).messages.delete_all(:delete_all) - post '/epp/command/poll', { frame: request_xml }, { 'HTTP_COOKIE' => 'session=api_bestnames' } - assert_equal '1300', Nokogiri::XML(response.body).at_css('result')[:code] - assert_equal 1, Nokogiri::XML(response.body).css('result').size - end - private - - def request_xml - <<-XML + request_xml = + <<-XML @@ -42,5 +36,67 @@ class EppPollTest < ApplicationIntegrationTest XML + post '/epp/command/poll', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames' + response_xml = Nokogiri::XML(response.body) + + assert_equal 1300.to_s, response_xml.at_css('result')[:code] + assert_equal 1, response_xml.css('result').size end -end + + def test_dequeue_message + message = messages(:greeting) + + request_xml = <<-XML + + + + + + + XML + + post '/epp/command/poll', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames' + message.reload + response_xml = Nokogiri::XML(response.body) + + assert_not message.queued? + assert_equal 1000.to_s, response_xml.at_css('result')[:code] + assert_equal 1, response_xml.css('result').size + assert_equal 1.to_s, response_xml.at_css('msgQ')[:count] + assert_equal message.id.to_s, response_xml.at_css('msgQ')[:id] + end + + def test_message_of_other_registrars_cannot_be_dequeued + message = messages(:farewell) + + request_xml = <<-XML + + + + + + + XML + post '/epp/command/poll', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames' + response_xml = Nokogiri::XML(response.body) + message.reload + + assert message.queued? + assert_equal 2303.to_s, response_xml.at_css('result')[:code] + end + + def test_message_not_found + request_xml = <<-XML + + + + + + + XML + post '/epp/command/poll', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames' + response_xml = Nokogiri::XML(response.body) + + assert_equal 2303.to_s, response_xml.at_css('result')[:code] + end +end \ No newline at end of file diff --git a/test/models/message_test.rb b/test/models/message_test.rb index 5c557150d..ba2203d8a 100644 --- a/test/models/message_test.rb +++ b/test/models/message_test.rb @@ -18,4 +18,10 @@ class MessageTest < ActiveSupport::TestCase @message.registrar = nil assert @message.invalid? end -end + + def test_dequeue + @message.dequeue + @message.reload + assert_not @message.queued? + end +end \ No newline at end of file