67 lines
2.3 KiB
Erlang
67 lines
2.3 KiB
Erlang
|
%%%=============================================================================
|
||
|
%%% @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!"
|
||
|
].
|