mirror of
https://github.com/internetee/epp_proxy.git
synced 2025-08-15 03:53:48 +02:00
Add test case for both login and logout
This commit is contained in:
parent
c70d7c6bf2
commit
d8e03ed484
7 changed files with 98 additions and 107 deletions
|
@ -5,8 +5,6 @@ class BackendServer < Roda
|
||||||
|
|
||||||
route do |r|
|
route do |r|
|
||||||
response['Content-Type'] = 'application/xml'
|
response['Content-Type'] = 'application/xml'
|
||||||
random_number = rand(2)
|
|
||||||
@success = random_number == 1
|
|
||||||
|
|
||||||
r.on "session" do
|
r.on "session" do
|
||||||
r.get "hello" do
|
r.get "hello" do
|
||||||
|
@ -14,14 +12,11 @@ class BackendServer < Roda
|
||||||
end
|
end
|
||||||
|
|
||||||
r.post "login" do
|
r.post "login" do
|
||||||
if @success
|
render("session/login")
|
||||||
render("session/login_successful")
|
|
||||||
else
|
|
||||||
render("session/login_failed")
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
r.post "logout" do
|
r.post "logout" do
|
||||||
|
render("session/logout")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
11
apps/epp_proxy/priv/test_backend_app/views/session/login.erb
Normal file
11
apps/epp_proxy/priv/test_backend_app/views/session/login.erb
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="lib/schemas/epp-ee-1.0.xsd">
|
||||||
|
<response>
|
||||||
|
<result code="1000">
|
||||||
|
<msg>Command completed successfully</msg>
|
||||||
|
</result>
|
||||||
|
<trID>
|
||||||
|
<svTRID>ccReg-5886259930</svTRID>
|
||||||
|
</trID>
|
||||||
|
</response>
|
||||||
|
</epp>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="lib/schemas/epp-ee-1.0.xsd">
|
||||||
|
<response>
|
||||||
|
<result code="1500">
|
||||||
|
<msg>Command completed successfully; ending session</msg>
|
||||||
|
</result>
|
||||||
|
<trID>
|
||||||
|
<svTRID>ccReg-3475281342</svTRID>
|
||||||
|
</trID>
|
||||||
|
</response>
|
||||||
|
</epp>
|
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
-export([create_map/1, create_session_id/1,
|
-export([create_map/1, create_session_id/1,
|
||||||
frame_length/1, frame_length_to_receive/1,
|
frame_length/1, frame_length_to_receive/1,
|
||||||
frame_length_to_send/1, readable_ip/1, session_id/1, path_for_file/1]).
|
frame_length_to_send/1, path_for_file/1, readable_ip/1,
|
||||||
|
session_id/1]).
|
||||||
|
|
||||||
-define(OFFSET, 4).
|
-define(OFFSET, 4).
|
||||||
|
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIGWzCCBEOgAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwgaoxCzAJBgNVBAYTAkVF
|
|
||||||
MREwDwYDVQQIDAhIYXJqdW1hYTEQMA4GA1UEBwwHVGFsbGlubjEjMCEGA1UECgwa
|
|
||||||
RWVzdGkgSW50ZXJuZXRpIFNpaHRhc3V0dXMxLzAtBgNVBAMMJk1hY2llaidzIGRl
|
|
||||||
dmVsb3BtZW50IGNlcnRpZmljYXRlIChFSVMpMSAwHgYJKoZIhvcNAQkBFhFoZWxs
|
|
||||||
b0BpbnRlcm5ldC5lZTAeFw0xOTA1MjMxMjUwMzFaFw0yMDA1MjIxMjUwMzFaMIGp
|
|
||||||
MQswCQYDVQQGEwJFRTERMA8GA1UECAwISGFyanVtYWExIzAhBgNVBAoMGkVlc3Rp
|
|
||||||
IEludGVybmV0aSBTaWh0YXN1dHVzMSMwIQYDVQQLDBpFUFAgUHJveHkgdGVzdCBj
|
|
||||||
ZXJ0aWZpY2F0ZTEXMBUGA1UEAwwORXBwIFByb3h5IFRlc3QxJDAiBgkqhkiG9w0B
|
|
||||||
CQEWFWVwcC1wcm94eUBpbnRlcm5ldC5lZTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
|
|
||||||
ADCCAgoCggIBAMQalaRFIgknGeQ5iuoBju+cviOksq85azQRIwDaxwwjpFwmRwt2
|
|
||||||
smPa/0GMyG3/FBGNpUBtb+0ngVMCw5h4aUeWhs9Y9d1kMqaEgpdLm0hWpUIIqOMO
|
|
||||||
wQpHugPQGJiz75Y4tIUbdazODTvEChDNPZ7Ut8jVzsoRFIgPV4abcoqTqD0wNYZb
|
|
||||||
TQ0MzOulB2PsxzKrT9MzWkdyju3FYtDxXRGKP3vXC3YhN4EXLqoDzMU51NoYQcPc
|
|
||||||
Fk5j+1aQKXfNwJcLEvHGlHce9MIEakl5sJt+u8REmp43uy//DNa7mzACfu4xHAW+
|
|
||||||
heuH+xhEZAT40oxFi0Goa2rhMjz7hx5GM8KPFvJ0vlkR74pRnz1/XNqpx5PundYY
|
|
||||||
RK0swk+E+z3oFqClsjFiBVZQSPnYdGhid3qDaSqTsVO4G07rzh54SrBm7AsU8CQF
|
|
||||||
45OOngr1razw5jKnWH6qzNLFKcZBchOSmW31ZpTqfbol6UhThEM6qZr5Dsk+QZbd
|
|
||||||
kVZ5v3YZs72HL5Fxn/Ix5WOL886fSBOOHyg9rkFoypXZxfyZZehbhY3alszqJFbj
|
|
||||||
bJ4f+tt2+ObCbkUiN3huP+i+41l+eIBobtsaQhtdzp/44KWR5u4kk2OexO4oZPFN
|
|
||||||
futAsemo/sxU8E9KvjS02j2zIXTNyV/8Axp30LhHFQvey8QtNbhM2YClAgMBAAGj
|
|
||||||
gYkwgYYwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwLAYJYIZIAYb4QgENBB8WHU9w
|
|
||||||
ZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBSec3EaCPVAovnz
|
|
||||||
u01SwyEoc9Kt6zAfBgNVHSMEGDAWgBRF1wL+I61d2uBQ1467prsu2SYRGTANBgkq
|
|
||||||
hkiG9w0BAQsFAAOCAgEAPks4fHoAvzjidw8aJB+nX1pDzbWEbeWOl4xvYizvCN/c
|
|
||||||
rWeFp6+BnaUuQK5lXTS1z9m2bf70sSFOFTl6JHbpYdU7xr5Qfn69gfdIqeC2k52g
|
|
||||||
R29oYYRQSjMxufHW9IMufJ/FL1PW6EIlahx01WWla/wg6EC3Bygvnz5oCsDaNTwO
|
|
||||||
eWKSFVwnE1l6kOoxSparvOdrKpbqvmhUGy8qCRwvLtF2CRQihYSHnnU18oe78REP
|
|
||||||
Hkyqfjr/GxHn8senKJcN9AQ4RjxMeH/X1wr7Z+0OTpQh61AMEzzyO9sHy9uvxQoN
|
|
||||||
FREhTs53T10Br5Ppx7hp9S6jmiYgL8wtJwJIWFowq87VfuyeqEKhFXqjybeAXIlv
|
|
||||||
o4dpUd3woW5rBWhmo6tVs04vNtD6LFktbgkRIV8PPeb1M4QkJ8eD6z7tJNEHVGmK
|
|
||||||
S0vlDrdTzERwJlhh52d7a6vPXGG1/S7Mji/xyyDuWClaoJXy5NVr8DnKb1WudAXH
|
|
||||||
nspSoh4YApK4oWTKxYWuhs7rshxFu5A2T03RzJbgsAA/9wrZ4BZz4OCtEVUYoIhV
|
|
||||||
Qv4f2eOKB8d//vYJWon4R6ukYDZZnYNGplmxl47rzcEam1K88IeaBLN1hirvb9G9
|
|
||||||
Xk+wDNgZwJmHtYeJSOZHjiQCl2YJCiVn4gbuDxjrEJvye4s6n8fdn4sv2kX06MU=
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,51 +0,0 @@
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
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
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
|
@ -6,12 +6,13 @@
|
||||||
-export([all/0]).
|
-export([all/0]).
|
||||||
-export([init_per_suite/1, end_per_suite/1]).
|
-export([init_per_suite/1, end_per_suite/1]).
|
||||||
-export([frame_size_test_case/1,
|
-export([frame_size_test_case/1,
|
||||||
greetings_test_case/1]).
|
greetings_test_case/1,
|
||||||
|
session_test_case/1]).
|
||||||
|
|
||||||
all() ->
|
all() ->
|
||||||
[frame_size_test_case,
|
[frame_size_test_case,
|
||||||
greetings_test_case].
|
greetings_test_case,
|
||||||
|
session_test_case].
|
||||||
|
|
||||||
init_per_suite(Config) ->
|
init_per_suite(Config) ->
|
||||||
application:ensure_all_started(epp_proxy),
|
application:ensure_all_started(epp_proxy),
|
||||||
|
@ -43,6 +44,62 @@ greetings_test_case(Config) ->
|
||||||
match_data(Data, "<greeting>"),
|
match_data(Data, "<greeting>"),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
|
session_test_case(Config) ->
|
||||||
|
Options = proplists:get_value(ssl_options, Config),
|
||||||
|
{ok, Socket} = ssl:connect("localhost", 1443, Options, 2000),
|
||||||
|
_Data = receive_data(Socket),
|
||||||
|
LoginCommand =
|
||||||
|
<<"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||||
|
"<epp xmlns=\"https://epp.tld.ee/schema/epp-ee-1.0.xsd\">\n"
|
||||||
|
"<command>\n"
|
||||||
|
"<login>\n"
|
||||||
|
"<clID>test_bestnames</clID>\n"
|
||||||
|
"<pw>testtest</pw>\n"
|
||||||
|
"<options>\n"
|
||||||
|
"<version>1.0</version>\n"
|
||||||
|
"<lang>en</lang>\n"
|
||||||
|
"</options>\n"
|
||||||
|
"<svcs>\n"
|
||||||
|
"<objURI>https://epp.tld.ee/schema/domain-eis-1.0.xsd</objURI>\n"
|
||||||
|
"<objURI>https://epp.tld.ee/schema/contact-ee-1.1.xsd</objURI>\n"
|
||||||
|
"<objURI>urn:ietf:params:xml:ns:host-1.0</objURI>\n"
|
||||||
|
"<objURI>urn:ietf:params:xml:ns:keyrelay-1.0</objURI>\n"
|
||||||
|
"</svcs>\n"
|
||||||
|
"</login>\n"
|
||||||
|
"</command>\n"
|
||||||
|
"</epp>\n">>,
|
||||||
|
ok = send_data(LoginCommand, Socket),
|
||||||
|
LoginResponse = receive_data(Socket),
|
||||||
|
match_data(LoginResponse, "Command completed successfully"),
|
||||||
|
match_data(LoginResponse, "ccReg-5886259930"),
|
||||||
|
LogoutCommand =
|
||||||
|
<<"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||||
|
"<epp xmlns=\"https://epp.tld.ee/schema/epp-ee-1.0.xsd\">\n"
|
||||||
|
"<command>\n"
|
||||||
|
"<logout>\n"
|
||||||
|
"<clID>test_bestnames</clID>\n"
|
||||||
|
"<pw>testtest</pw>\n"
|
||||||
|
"<options>\n"
|
||||||
|
"<version>1.0</version>\n"
|
||||||
|
"<lang>en</lang>\n"
|
||||||
|
"</options>\n"
|
||||||
|
"<svcs>\n"
|
||||||
|
"<objURI>https://epp.tld.ee/schema/domain-eis-1.0.xsd</objURI>\n"
|
||||||
|
"<objURI>https://epp.tld.ee/schema/contact-ee-1.1.xsd</objURI>\n"
|
||||||
|
"<objURI>urn:ietf:params:xml:ns:host-1.0</objURI>\n"
|
||||||
|
"<objURI>urn:ietf:params:xml:ns:keyrelay-1.0</objURI>\n"
|
||||||
|
"</svcs>\n"
|
||||||
|
"</logout>\n"
|
||||||
|
"</command>\n"
|
||||||
|
"</epp>\n">>,
|
||||||
|
ok = send_data(LogoutCommand, Socket),
|
||||||
|
LogoutResponse = receive_data(Socket),
|
||||||
|
match_data(LogoutResponse,
|
||||||
|
"Command completed successfully; ending session"),
|
||||||
|
%% After receiving logout, connection should be closed.
|
||||||
|
{error, closed} = receive_data(Socket),
|
||||||
|
ok.
|
||||||
|
|
||||||
%% Helper functions:
|
%% Helper functions:
|
||||||
length_of_data(Data) ->
|
length_of_data(Data) ->
|
||||||
EPPEnvelope = binary:part(Data, {0, 4}),
|
EPPEnvelope = binary:part(Data, {0, 4}),
|
||||||
|
@ -56,11 +113,14 @@ send_data(Message, Socket) ->
|
||||||
ok = ssl:send(Socket, CompleteMessage).
|
ok = ssl:send(Socket, CompleteMessage).
|
||||||
|
|
||||||
receive_data(Socket) ->
|
receive_data(Socket) ->
|
||||||
{ok, Data} = ssl:recv(Socket, 0, 1200),
|
case ssl:recv(Socket, 0, 1200) of
|
||||||
|
{error, Reason} -> {error, Reason};
|
||||||
|
{ok, Data } ->
|
||||||
EppEnvelope = binary:part(Data, {0, 4}),
|
EppEnvelope = binary:part(Data, {0, 4}),
|
||||||
ReportedLength = binary:decode_unsigned(EppEnvelope, big),
|
ReportedLength = binary:decode_unsigned(EppEnvelope, big),
|
||||||
binary:part(Data, {byte_size(Data), 4 - ReportedLength}).
|
binary:part(Data, {byte_size(Data), 4 - ReportedLength})
|
||||||
|
end.
|
||||||
|
|
||||||
match_data(Data, Pattern) ->
|
match_data(Data, Pattern) ->
|
||||||
{ok, MatchPattern} = re:compile(Pattern),
|
{ok, MatchPattern} = re:compile(Pattern),
|
||||||
{match, _Captured} = re:run(Data, Pattern).
|
{match, _Captured} = re:run(Data, MatchPattern).
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue