ejabberd-contrib/ejabberd_auth_http/deps/fusco/test/fusco_protocol_tests.erl

67 lines
2.3 KiB
Erlang
Raw Normal View History

%%%=============================================================================
%%% @copyright (C) 1999-2013, Erlang Solutions Ltd
%%% @author Diana Corbacho <diana.corbacho@erlang-solutions.com>
%%% @doc
%%% @end
%%%=============================================================================
-module(fusco_protocol_tests).
-copyright("2013, Erlang Solutions Ltd.").
-include_lib("eunit/include/eunit.hrl").
-include("fusco.hrl").
-export([test_decode_header/0]).
fusco_protocol_test_() ->
[{"HTTP version", ?_test(http_version())},
{"Cookies", ?_test(cookies())},
{"Decode header", ?_test(decode_header())}].
http_version() ->
L = {_, _, Socket} = test_utils:start_listener(cookie_message()),
test_utils:send_message(Socket),
?assertMatch(#response{version = {1,1},
status_code = <<"200">>,
reason = <<"OK">>,
body = <<"Great success!">>},
fusco_protocol:recv(Socket, false)),
test_utils:stop_listener(L).
cookies() ->
L = {_, _, Socket} = test_utils:start_listener(cookie_message()),
test_utils:send_message(Socket),
Recv = fusco_protocol:recv(Socket, false),
test_utils:stop_listener(L),
?assertMatch(#response{version = {1,1},
status_code = <<"200">>,
reason = <<"OK">>,
headers = [{<<"set-cookie">>,<<"name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT">>},
{<<"set-cookie">>,<<"name=value">>} | _],
body = <<"Great success!">>},
Recv).
decode_header() ->
?assertMatch(#response{
headers = [{<<"set-cookie">>,<<"name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT">>},
{<<"set-cookie">>,<<"name=value">>},
{<<"content-length">>, <<"14">>},
{<<"content-type">>,<<"text/plain">>}],
body = <<"Great success!">>},
test_decode_header()).
test_decode_header() ->
fusco_protocol:decode_header(header(), <<>>, #response{}).
header() ->
<<"Content-type: text/plain\r\nContent-length: 14\r\nSet-Cookie: name=value\r\nSet-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT\r\n\r\nGreat success!">>.
cookie_message() ->
[
"HTTP/1.1 200 OK\r\n"
"Content-type: text/plain\r\nContent-length: 14\r\n"
"Set-Cookie: name=value\r\n"
"Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT\r\n"
"\r\n"
"Great success!"
].