diff options
Diffstat (limited to 'src/cowboy_http.erl')
-rw-r--r-- | src/cowboy_http.erl | 79 |
1 files changed, 44 insertions, 35 deletions
diff --git a/src/cowboy_http.erl b/src/cowboy_http.erl index b958020..c4d3d3d 100644 --- a/src/cowboy_http.erl +++ b/src/cowboy_http.erl @@ -60,10 +60,6 @@ -export_type([headers/0]). -export_type([status/0]). --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). --endif. - %% Parsing. %% @doc Parse a non-empty list of the given type. @@ -1319,40 +1315,53 @@ x_www_form_urlencoded_test_() -> [{Qs, fun() -> R = x_www_form_urlencoded(Qs) end} || {Qs, R} <- Tests]. urldecode_test_() -> - U = fun urldecode/2, - [?_assertEqual(<<" ">>, U(<<"%20">>, crash)), - ?_assertEqual(<<" ">>, U(<<"+">>, crash)), - ?_assertEqual(<<0>>, U(<<"%00">>, crash)), - ?_assertEqual(<<255>>, U(<<"%fF">>, crash)), - ?_assertEqual(<<"123">>, U(<<"123">>, crash)), - ?_assertEqual(<<"%i5">>, U(<<"%i5">>, skip)), - ?_assertEqual(<<"%5">>, U(<<"%5">>, skip)), - ?_assertError(badarg, U(<<"%i5">>, crash)), - ?_assertError(badarg, U(<<"%5">>, crash)) - ]. + F = fun(Qs, O) -> + try urldecode(Qs, O) of + R -> + {ok, R} + catch _:E -> + {error, E} + end + end, + Tests = [ + {<<"%20">>, crash, {ok, <<" ">>}}, + {<<"+">>, crash, {ok, <<" ">>}}, + {<<"%00">>, crash, {ok, <<0>>}}, + {<<"%fF">>, crash, {ok, <<255>>}}, + {<<"123">>, crash, {ok, <<"123">>}}, + {<<"%i5">>, skip, {ok, <<"%i5">>}}, + {<<"%5">>, skip, {ok, <<"%5">>}}, + {<<"%i5">>, crash, {error, badarg}}, + {<<"%5">>, crash, {error, badarg}} + ], + [{Qs, fun() -> R = F(Qs,O) end} || {Qs, O, R} <- Tests]. urlencode_test_() -> - U = fun urlencode/2, - [?_assertEqual(<<"%ff%00">>, U(<<255,0>>, [])), - ?_assertEqual(<<"%FF%00">>, U(<<255,0>>, [upper])), - ?_assertEqual(<<"+">>, U(<<" ">>, [])), - ?_assertEqual(<<"%20">>, U(<<" ">>, [noplus])), - ?_assertEqual(<<"aBc">>, U(<<"aBc">>, [])), - ?_assertEqual(<<".-~_">>, U(<<".-~_">>, [])), - ?_assertEqual(<<"%ff+">>, urlencode(<<255, " ">>)) - ]. + Tests = [ + {<<255,0>>, [], <<"%ff%00">>}, + {<<255,0>>, [upper], <<"%FF%00">>}, + {<<" ">>, [], <<"+">>}, + {<<" ">>, [noplus], <<"%20">>}, + {<<"aBc">>, [], <<"aBc">>}, + {<<".-~_">>, [], <<".-~_">>} + ], + Tests2 = [{<<255, " ">>,<<"%ff+">>}], + [{V, fun() -> R = urlencode(V, O) end} || {V, O, R} <- Tests] ++ + [{V, fun() -> R = urlencode(V) end} || {V, R} <- Tests2]. http_authorization_test_() -> - [?_assertEqual({<<"basic">>, {<<"Alladin">>, <<"open sesame">>}}, - authorization(<<"QWxsYWRpbjpvcGVuIHNlc2FtZQ==">>, <<"basic">>)), - ?_assertEqual({error, badarg}, - authorization(<<"dXNlcm5hbWUK">>, <<"basic">>)), - ?_assertEqual({error, badarg}, - authorization(<<"_[]@#$%^&*()-AA==">>, <<"basic">>)), - ?_assertEqual({error, badarg}, - authorization(<<"dXNlcjpwYXNzCA==">>, <<"basic">>)), %% user:pass\010 - ?_assertEqual({<<"bearer">>,<<"some_secret_key">>}, - authorization(<<" some_secret_key">>, <<"bearer">>)) - ]. + Tests = [ + {<<"basic">>, <<"QWxsYWRpbjpvcGVuIHNlc2FtZQ==">>, + {<<"basic">>, {<<"Alladin">>, <<"open sesame">>}}}, + {<<"basic">>, <<"dXNlcm5hbWUK">>, + {error, badarg}}, + {<<"basic">>, <<"_[]@#$%^&*()-AA==">>, + {error, badarg}}, + {<<"basic">>, <<"dXNlcjpwYXNzCA==">>, + {error, badarg}}, + {<<"bearer">>, <<" some_secret_key">>, + {<<"bearer">>,<<"some_secret_key">>}} + ], + [{V, fun() -> R = authorization(V,T) end} || {T, V, R} <- Tests]. -endif. |