diff --git a/test/fixtures/messages.yml b/test/fixtures/messages.yml
index 47cbdd0f2..58ae3bd6d 100644
--- a/test/fixtures/messages.yml
+++ b/test/fixtures/messages.yml
@@ -2,3 +2,14 @@ greeting:
body: Welcome!
queued: true
registrar: bestnames
+
+domain_deleted:
+ body: Your domain has been deleted
+ queued: true
+ registrar: bestnames
+ created_at: <%= Time.zone.parse('2010-07-05').to_s(:db) %>
+
+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 30ee5c769..d79ed28d6 100644
--- a/test/integration/epp/poll_test.rb
+++ b/test/integration/epp/poll_test.rb
@@ -1,24 +1,11 @@
require 'test_helper'
class EppPollTest < ApplicationIntegrationTest
- def test_messages
- post '/epp/command/poll', { frame: request_xml }, { 'HTTP_COOKIE' => 'session=api_bestnames' }
- assert_equal '1301', Nokogiri::XML(response.body).at_css('result')[:code]
- assert_equal 1, Nokogiri::XML(response.body).css('msgQ').size
- assert_equal 1, Nokogiri::XML(response.body).css('result').size
- end
+ def test_return_first_message_when_queue_is_not_empty
+ message = messages(:domain_deleted)
- def test_no_messages
- 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
@@ -26,5 +13,90 @@ class EppPollTest < ApplicationIntegrationTest
XML
+ post '/epp/command/poll', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
+ response_xml = Nokogiri::XML(response.body)
+
+ assert_equal 1301.to_s, response_xml.at_css('result')[:code]
+ assert_equal 1, response_xml.css('result').size
+ assert_equal 2.to_s, response_xml.at_css('msgQ')[:count]
+ assert_equal message.id.to_s, response_xml.at_css('msgQ')[:id]
+ assert_equal Time.zone.parse('2010-07-05').iso8601, response_xml.at_css('msgQ qDate').text
+ assert_equal 'Your domain has been deleted', response_xml.at_css('msgQ msg').text
end
-end
+
+ def test_no_messages_in_queue
+ registrars(:bestnames).messages.delete_all(:delete_all)
+
+ request_xml =
+ <<-XML
+
+
+
+
+
+
+ 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
+
+ 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