diff options
author | Loïc Hoguin <[email protected]> | 2018-09-07 13:56:12 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2018-09-07 13:56:12 +0200 |
commit | 4b385749f2aab90b5c7e44e844159c0221a8790d (patch) | |
tree | 1139d59b19aa2323cf29290665493a823b7087ed /test/handlers | |
parent | dcc6f9326f70efbab81897aae8f2e23d621c7f3a (diff) | |
download | cowboy-4b385749f2aab90b5c7e44e844159c0221a8790d.tar.gz cowboy-4b385749f2aab90b5c7e44e844159c0221a8790d.tar.bz2 cowboy-4b385749f2aab90b5c7e44e844159c0221a8790d.zip |
Add cowboy_req:read_and_match_urlencoded_body/2,3
Diffstat (limited to 'test/handlers')
-rw-r--r-- | test/handlers/echo_h.erl | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/test/handlers/echo_h.erl b/test/handlers/echo_h.erl index a116442..ec37a66 100644 --- a/test/handlers/echo_h.erl +++ b/test/handlers/echo_h.erl @@ -46,6 +46,19 @@ echo(<<"read_urlencoded_body">>, Req0, Opts) -> _ -> cowboy_req:read_urlencoded_body(Req0) end, {ok, cowboy_req:reply(200, #{}, value_to_iodata(Body), Req), Opts}; +echo(<<"read_and_match_urlencoded_body">>, Req0, Opts) -> + Path = cowboy_req:path(Req0), + case {Path, Opts} of + {<<"/opts", _/bits>>, #{crash := true}} -> ct_helper:ignore(cowboy_req, read_body, 2); + {_, #{crash := true}} -> ct_helper:ignore(cowboy_req, read_urlencoded_body, 2); + _ -> ok + end, + {ok, Body, Req} = case Path of + <<"/opts", _/bits>> -> cowboy_req:read_and_match_urlencoded_body([], Req0, Opts); + <<"/crash", _/bits>> -> cowboy_req:read_and_match_urlencoded_body([], Req0, Opts); + _ -> cowboy_req:read_and_match_urlencoded_body([], Req0) + end, + {ok, cowboy_req:reply(200, #{}, value_to_iodata(Body), Req), Opts}; echo(<<"uri">>, Req, Opts) -> Value = case cowboy_req:path_info(Req) of [<<"origin">>] -> cowboy_req:uri(Req, #{host => undefined}); @@ -61,7 +74,12 @@ echo(<<"match">>, Req, Opts) -> Fields = [binary_to_atom(F, latin1) || F <- Fields0], Value = case Type of <<"qs">> -> cowboy_req:match_qs(Fields, Req); - <<"cookies">> -> cowboy_req:match_cookies(Fields, Req) + <<"cookies">> -> cowboy_req:match_cookies(Fields, Req); + <<"body_qs">> -> + %% Note that the Req should not be discarded but for the + %% purpose of this test this has no ill impacts. + {ok, Match, _} = cowboy_req:read_and_match_urlencoded_body(Fields, Req), + Match end, {ok, cowboy_req:reply(200, #{}, value_to_iodata(Value), Req), Opts}; echo(What, Req, Opts) -> |