diff options
author | Loïc Hoguin <[email protected]> | 2025-02-11 12:00:03 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2025-02-11 13:28:45 +0100 |
commit | e8a1868033a75fa1f684a8b91ff7aa25e6c67676 (patch) | |
tree | 06abf00b254033dd36a43730e3fa37f50b4c9eaa /test | |
parent | f316a65906d97609c7a3f317c0b1dea95fc37e6c (diff) | |
download | cowboy-e8a1868033a75fa1f684a8b91ff7aa25e6c67676.tar.gz cowboy-e8a1868033a75fa1f684a8b91ff7aa25e6c67676.tar.bz2 cowboy-e8a1868033a75fa1f684a8b91ff7aa25e6c67676.zip |
Add support for lists in cowboy_req:set_resp_headers
This is meant to be used with clients such as Gun to simplify
proxying and similar operations. The set-cookie header must
not be set this way so there is still some extra processing
to be done to fully translate a Gun response into a Cowboy
response.
Diffstat (limited to 'test')
-rw-r--r-- | test/handlers/resp_h.erl | 13 | ||||
-rw-r--r-- | test/req_SUITE.erl | 10 |
2 files changed, 20 insertions, 3 deletions
diff --git a/test/handlers/resp_h.erl b/test/handlers/resp_h.erl index 6e9b5f7..61f714f 100644 --- a/test/handlers/resp_h.erl +++ b/test/handlers/resp_h.erl @@ -43,12 +43,25 @@ do(<<"set_resp_headers">>, Req0, Opts) -> <<"content-encoding">> => <<"compress">> }, Req0), {ok, cowboy_req:reply(200, #{}, "OK", Req), Opts}; +do(<<"set_resp_headers_list">>, Req0, Opts) -> + Req = cowboy_req:set_resp_headers([ + {<<"content-type">>, <<"text/plain">>}, + {<<"content-encoding">>, <<"compress">>} + ], Req0), + {ok, cowboy_req:reply(200, #{}, "OK", Req), Opts}; do(<<"set_resp_headers_cookie">>, Req0, Opts) -> ct_helper:ignore(cowboy_req, set_resp_headers, 2), Req = cowboy_req:set_resp_headers(#{ <<"set-cookie">> => <<"name=value">> }, Req0), {ok, cowboy_req:reply(200, #{}, "OK", Req), Opts}; +do(<<"set_resp_headers_list_cookie">>, Req0, Opts) -> + ct_helper:ignore(cowboy_req, set_resp_headers_list, 3), + Req = cowboy_req:set_resp_headers([ + {<<"set-cookie">>, <<"name=value">>}, + {<<"set-cookie">>, <<"name2=value2">>} + ], Req0), + {ok, cowboy_req:reply(200, #{}, "OK", Req), Opts}; do(<<"set_resp_headers_http11">>, Req0, Opts) -> Req = cowboy_req:set_resp_headers(#{ <<"connection">> => <<"custom-header, close">>, diff --git a/test/req_SUITE.erl b/test/req_SUITE.erl index f6208a2..0ea1f96 100644 --- a/test/req_SUITE.erl +++ b/test/req_SUITE.erl @@ -858,11 +858,15 @@ set_resp_header(Config) -> set_resp_headers(Config) -> doc("Response using set_resp_headers."), - {200, Headers, <<"OK">>} = do_get("/resp/set_resp_headers", Config), - true = lists:keymember(<<"content-type">>, 1, Headers), - true = lists:keymember(<<"content-encoding">>, 1, Headers), + {200, Headers1, <<"OK">>} = do_get("/resp/set_resp_headers", Config), + true = lists:keymember(<<"content-type">>, 1, Headers1), + true = lists:keymember(<<"content-encoding">>, 1, Headers1), + {200, Headers2, <<"OK">>} = do_get("/resp/set_resp_headers_list", Config), + true = lists:keymember(<<"content-type">>, 1, Headers2), + true = lists:keymember(<<"content-encoding">>, 1, Headers2), %% The set-cookie header is special. set_resp_cookie must be used. {500, _, _} = do_maybe_h3_error3(do_get("/resp/set_resp_headers_cookie", Config)), + {500, _, _} = do_maybe_h3_error3(do_get("/resp/set_resp_headers_list_cookie", Config)), ok. resp_header(Config) -> |