aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2025-02-11 12:00:03 +0100
committerLoïc Hoguin <[email protected]>2025-02-11 13:28:45 +0100
commite8a1868033a75fa1f684a8b91ff7aa25e6c67676 (patch)
tree06abf00b254033dd36a43730e3fa37f50b4c9eaa /test
parentf316a65906d97609c7a3f317c0b1dea95fc37e6c (diff)
downloadcowboy-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.erl13
-rw-r--r--test/req_SUITE.erl10
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) ->