require 'test_helper' class EppLoginTest < EppTestCase def test_correct_credentials request_xml = <<-XML test_bestnames testtest 1.0 en https://epp.tld.ee/schema/domain-eis-1.0.xsd https://epp.tld.ee/schema/contact-ee-1.1.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 XML post '/epp/session/login', { frame: request_xml }, 'HTTP_COOKIE' => 'session=new_session_id' assert_epp_response :completed_successfully assert EppSession.find_by(session_id: 'new_session_id') assert_equal users(:api_bestnames), EppSession.find_by(session_id: 'new_session_id').user end def test_user_cannot_login_again session = epp_sessions(:api_bestnames) user = session.user request_xml = <<-XML #{user.username} #{user.plain_text_password} 1.0 en https://epp.tld.ee/schema/domain-eis-1.0.xsd https://epp.tld.ee/schema/contact-ee-1.1.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 XML post '/epp/session/login', { frame: request_xml }, HTTP_COOKIE: "session=#{session.session_id}" assert_epp_response :use_error end def test_wrong_credentials request_xml = <<-XML non-existent valid-but-wrong 1.0 en https://epp.tld.ee/schema/domain-eis-1.0.xsd https://epp.tld.ee/schema/contact-ee-1.1.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 XML post '/epp/session/login', { frame: request_xml }, 'HTTP_COOKIE' => 'session=any_random_string' assert_epp_response :authentication_error_server_closing_connection end def test_password_change request_xml = <<-XML test_bestnames testtest new-password 1.0 en https://epp.tld.ee/schema/domain-eis-1.0.xsd https://epp.tld.ee/schema/contact-ee-1.1.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 XML post '/epp/session/login', { frame: request_xml }, 'HTTP_COOKIE' => 'session=new_session_id' assert_equal 'new-password', users(:api_bestnames).plain_text_password assert_epp_response :completed_successfully end def test_not_reached travel_to Time.zone.parse('2010-07-05') EppSession.delete_all request_xml = <<-XML test_bestnames testtest 1.0 en https://epp.tld.ee/schema/domain-eis-1.0.xsd https://epp.tld.ee/schema/contact-ee-1.1.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 XML (EppSession.limit_per_registrar - 1).times do EppSession.create!(session_id: SecureRandom.hex, user: users(:api_bestnames), updated_at: Time.zone.parse('2010-07-05')) end assert_difference 'EppSession.count' do post '/epp/session/login', { frame: request_xml }, 'HTTP_COOKIE' => 'session=new_session_id' end assert_epp_response :completed_successfully end def test_reached travel_to Time.zone.parse('2010-07-05') EppSession.delete_all request_xml = <<-XML test_bestnames testtest 1.0 en https://epp.tld.ee/schema/domain-eis-1.0.xsd https://epp.tld.ee/schema/contact-ee-1.1.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 XML EppSession.limit_per_registrar.times do EppSession.create!(session_id: SecureRandom.hex, user: users(:api_bestnames), updated_at: Time.zone.parse('2010-07-05')) end assert_no_difference 'EppSession.count' do post '/epp/session/login', { frame: request_xml }, 'HTTP_COOKIE' => 'session=new_session_id' end assert_epp_response :authentication_error_server_closing_connection end end