Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve EPP poll tests #943

Merged
merged 1 commit into from
Sep 17, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/controllers/epp/polls_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def poll
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
Expand Down
8 changes: 7 additions & 1 deletion test/fixtures/messages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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') %>
created_at: <%= Time.zone.parse('2010-07-05') %>

farewell:
body: Good bye!
queued: true
registrar: goodnames
74 changes: 65 additions & 9 deletions test/integration/epp/poll_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,79 @@ def test_return_latest_message_when_queue_is_not_empty
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

request_xml =
<<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<poll op="req"/>
</command>
</epp>
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

private
def test_dequeue_message
message = messages(:greeting)

def request_xml
<<-XML
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<poll op="req"/>
<poll op="ack" msgID="#{message.id}"/>
</command>
</epp>
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 version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<poll op="ack" msgID="#{message.id}"/>
</command>
</epp>
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 version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<poll op="ack" msgID="0"/>
</command>
</epp>
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
end
8 changes: 7 additions & 1 deletion test/models/message_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,10 @@ def test_invalid_without_registrar
@message.registrar = nil
assert @message.invalid?
end
end

def test_dequeue
@message.dequeue
@message.reload
assert_not @message.queued?
end
end