aboutsummaryrefslogtreecommitdiffstats
path: root/test/rfc6265bis_SUITE.erl
diff options
context:
space:
mode:
Diffstat (limited to 'test/rfc6265bis_SUITE.erl')
-rw-r--r--test/rfc6265bis_SUITE.erl41
1 files changed, 38 insertions, 3 deletions
diff --git a/test/rfc6265bis_SUITE.erl b/test/rfc6265bis_SUITE.erl
index 0672fec..ecaf45f 100644
--- a/test/rfc6265bis_SUITE.erl
+++ b/test/rfc6265bis_SUITE.erl
@@ -79,9 +79,10 @@ init_routes() -> [
{"/cookie-set/[...]", cookie_set_h, []},
{"/cookies/resources/echo-cookie.html", cookie_echo_h, []},
{"/cookies/resources/set-cookie.html", cookie_set_h, []},
- {<<"/cookies/resources/echo.py">>, cookie_echo_h, []},
- {<<"/cookies/resources/set.py">>, cookie_set_h, []},
- {<<"/ws">>, ws_cookie_h, []}
+ {"/cookies/resources/echo.py", cookie_echo_h, []},
+ {"/cookies/resources/set.py", cookie_set_h, []},
+ {"/informational", cookie_informational_h, []},
+ {"/ws", ws_cookie_h, []}
]}
].
@@ -141,6 +142,40 @@ do_request_test_file(Config) ->
%% Tests.
+dont_ignore_informational_set_cookie(Config) ->
+ doc("User agents may accept set-cookie headers "
+ "sent in informational responses. (RFC6265bis 3)"),
+ [{<<"informational">>, <<"1">>}, {<<"final">>, <<"1">>}]
+ = do_informational_set_cookie(Config, false).
+
+ignore_informational_set_cookie(Config) ->
+ doc("User agents may ignore set-cookie headers "
+ "sent in informational responses. (RFC6265bis 3)"),
+ [{<<"final">>, <<"1">>}]
+ = do_informational_set_cookie(Config, true).
+
+do_informational_set_cookie(Config, Boolean) ->
+ Protocol = config(protocol, Config),
+ {ok, ConnPid} = gun:open("localhost", config(port, Config), #{
+ transport => config(transport, Config),
+ protocols => [Protocol],
+ cookie_store => gun_cookies_list:init(),
+ cookie_ignore_informational => Boolean
+ }),
+ {ok, Protocol} = gun:await_up(ConnPid),
+ StreamRef1 = gun:get(ConnPid, "/informational"),
+ {inform, 103, Headers1} = gun:await(ConnPid, StreamRef1),
+ ct:log("Headers1:~n~p", [Headers1]),
+ {response, fin, 204, Headers2} = gun:await(ConnPid, StreamRef1),
+ ct:log("Headers2:~n~p", [Headers2]),
+ StreamRef2 = gun:get(ConnPid, "/cookie-echo"),
+ {response, nofin, 200, _} = gun:await(ConnPid, StreamRef2),
+ {ok, Body2} = gun:await_body(ConnPid, StreamRef2),
+ ct:log("Body2:~n~p", [Body2]),
+ Res = cow_cookie:parse_cookie(Body2),
+ gun:close(ConnPid),
+ Res.
+
-define(HOST, "web-platform.test").
%% WPT: domain/domain-attribute-host-with-and-without-leading-period