aboutsummaryrefslogtreecommitdiffstats
path: root/test/handlers/cookie_parser_h.erl
diff options
context:
space:
mode:
Diffstat (limited to 'test/handlers/cookie_parser_h.erl')
-rw-r--r--test/handlers/cookie_parser_h.erl23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/handlers/cookie_parser_h.erl b/test/handlers/cookie_parser_h.erl
new file mode 100644
index 0000000..cff5901
--- /dev/null
+++ b/test/handlers/cookie_parser_h.erl
@@ -0,0 +1,23 @@
+%% Feel free to use, reuse and abuse the code in this file.
+
+-module(cookie_parser_h).
+
+-export([init/2]).
+
+init(Req0=#{qs := Qs}, State) ->
+ %% Hardcoded path, but I doubt it's going to break anytime soon.
+ TestFile = iolist_to_binary(["../../test/wpt/cookies/", Qs, "-test"]),
+ {ok, Test} = file:read_file(TestFile),
+ %% We don't want the final empty line.
+ Lines = lists:reverse(tl(lists:reverse(string:split(Test, <<"\n">>, all)))),
+ Req = lists:foldl(fun
+ (<<"Set-Cookie: ",SetCookie/bits>>, Req1) ->
+ %% We do not use set_resp_cookie because we want to preserve ordering.
+ SetCookieList = cowboy_req:resp_header(<<"set-cookie">>, Req1, []),
+ cowboy_req:set_resp_header(<<"set-cookie">>, SetCookieList ++ [SetCookie], Req1);
+ (<<"Set-Cookie:">>, Req1) ->
+ Req1;
+ (<<"Location: ",Location/bits>>, Req1) ->
+ cowboy_req:set_resp_header(<<"location">>, Location, Req1)
+ end, Req0, Lines),
+ {ok, cowboy_req:reply(204, Req), State}.