Add test case for command

This commit is contained in:
Maciej Szlosarczyk 2019-07-12 14:47:47 +03:00
parent d8e03ed484
commit 31fa20a9a6
No known key found for this signature in database
GPG key ID: 41D62D42D3B0D765
3 changed files with 60 additions and 24 deletions

View file

@ -21,7 +21,8 @@ class BackendServer < Roda
end end
r.on "command" do r.on "command" do
r.post "create" do r.post "poll" do
render("command/poll")
end end
end end

View file

@ -0,0 +1,12 @@
<?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="1300">
<msg>Command completed successfully; no messages</msg>
</result>
<trID>
<clTRID>foo bar baz</clTRID>
<svTRID>ccReg-8688842425</svTRID>
</trID>
</response>
</epp>

View file

@ -7,12 +7,14 @@
-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]). session_test_case/1,
command_test_case/1]).
all() -> all() ->
[frame_size_test_case, [frame_size_test_case,
greetings_test_case, greetings_test_case,
session_test_case]. session_test_case,
command_test_case].
init_per_suite(Config) -> init_per_suite(Config) ->
application:ensure_all_started(epp_proxy), application:ensure_all_started(epp_proxy),
@ -48,27 +50,7 @@ session_test_case(Config) ->
Options = proplists:get_value(ssl_options, Config), Options = proplists:get_value(ssl_options, Config),
{ok, Socket} = ssl:connect("localhost", 1443, Options, 2000), {ok, Socket} = ssl:connect("localhost", 1443, Options, 2000),
_Data = receive_data(Socket), _Data = receive_data(Socket),
LoginCommand = ok = send_data(login_command(), Socket),
<<"<?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), LoginResponse = receive_data(Socket),
match_data(LoginResponse, "Command completed successfully"), match_data(LoginResponse, "Command completed successfully"),
match_data(LoginResponse, "ccReg-5886259930"), match_data(LoginResponse, "ccReg-5886259930"),
@ -100,6 +82,26 @@ session_test_case(Config) ->
{error, closed} = receive_data(Socket), {error, closed} = receive_data(Socket),
ok. ok.
command_test_case(Config) ->
Options = proplists:get_value(ssl_options, Config),
{ok, Socket} = ssl:connect("localhost", 1443, Options, 2000),
_Data = receive_data(Socket),
ok = send_data(login_command(), Socket),
_LoginResponse = receive_data(Socket),
PollCommand =
<<"<?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"
"<poll op=\"req\"/>\n"
"<clTRID>foo bar baz</clTRID>\n"
"</command>\n"
"</epp>\n">>,
ok = send_data(PollCommand, Socket),
PollResponse = receive_data(Socket),
match_data(PollResponse,
"Command completed successfully; no messages"),
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}),
@ -124,3 +126,24 @@ receive_data(Socket) ->
match_data(Data, Pattern) -> match_data(Data, Pattern) ->
{ok, MatchPattern} = re:compile(Pattern), {ok, MatchPattern} = re:compile(Pattern),
{match, _Captured} = re:run(Data, MatchPattern). {match, _Captured} = re:run(Data, MatchPattern).
login_command() ->
<<"<?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">>.