diff --git a/test/fixtures/epp_sessions.yml b/test/fixtures/epp_sessions.yml
index cc40c8211..6f1173ca9 100644
--- a/test/fixtures/epp_sessions.yml
+++ b/test/fixtures/epp_sessions.yml
@@ -1,7 +1,7 @@
api_bestnames:
- session_id: 1
+ session_id: api_bestnames
user: api_bestnames
api_goodnames:
- session_id: 2
+ session_id: api_goodnames
user: api_goodnames
diff --git a/test/integration/epp/session/login_test.rb b/test/integration/epp/session/login_test.rb
new file mode 100644
index 000000000..2be7e09a5
--- /dev/null
+++ b/test/integration/epp/session/login_test.rb
@@ -0,0 +1,60 @@
+require 'test_helper'
+
+class EppLoginTest < ActionDispatch::IntegrationTest
+ 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 EppSession.find_by(session_id: 'new_session_id')
+ assert_equal users(:api_bestnames), EppSession.find_by(session_id: 'new_session_id').user
+ assert Nokogiri::XML(response.body).at_css('result[code="1000"]')
+ assert_equal 1, Nokogiri::XML(response.body).css('result').size
+ 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 Nokogiri::XML(response.body).at_css('result[code="2501"]')
+ end
+end
diff --git a/test/integration/epp/session/logout_test.rb b/test/integration/epp/session/logout_test.rb
new file mode 100644
index 000000000..7237d4073
--- /dev/null
+++ b/test/integration/epp/session/logout_test.rb
@@ -0,0 +1,29 @@
+require 'test_helper'
+
+class EppLogoutTest < ActionDispatch::IntegrationTest
+ def setup
+ @request_xml = <<-XML
+
+
+
+
+
+
+ XML
+
+ post '/epp/session/logout', { frame: @request_xml }, { 'HTTP_COOKIE' => 'session=api_bestnames' }
+ end
+
+ def test_success_response
+ assert Nokogiri::XML(response.body).at_css('result[code="1500"]')
+ assert_equal 1, Nokogiri::XML(response.body).css('result').size
+ end
+
+ def test_ends_current_session
+ assert_nil EppSession.find_by(session_id: 'api_bestnames')
+ end
+
+ def test_keeps_other_sessions_intact
+ assert EppSession.find_by(session_id: 'api_goodnames')
+ end
+end