aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/handlers/resp_h.erl52
-rw-r--r--test/req_SUITE.erl49
2 files changed, 101 insertions, 0 deletions
diff --git a/test/handlers/resp_h.erl b/test/handlers/resp_h.erl
index e924c89..625a2ea 100644
--- a/test/handlers/resp_h.erl
+++ b/test/handlers/resp_h.erl
@@ -246,6 +246,58 @@ do(<<"stream_body_content_length">>, Req0, Opts) ->
cowboy_req:stream_body(<<"Hello">>, nofin, Req),
{ok, Req, Opts}
end;
+do(<<"stream_events">>, Req0, Opts) ->
+ case cowboy_req:binding(arg, Req0) of
+ %%<<"single">>
+ %%<<"list">>
+ <<"single">> ->
+ Req = cowboy_req:stream_reply(200,
+ #{<<"content-type">> => <<"text/event-stream">>},
+ Req0),
+ cowboy_req:stream_events(#{
+ event => <<"add_comment">>,
+ data => <<"Comment text.\nWith many lines.">>
+ }, fin, Req),
+ {ok, Req, Opts};
+ <<"list">> ->
+ Req = cowboy_req:stream_reply(200,
+ #{<<"content-type">> => <<"text/event-stream">>},
+ Req0),
+ cowboy_req:stream_events([
+ #{
+ event => <<"add_comment">>,
+ data => <<"Comment text.\nWith many lines.">>
+ },
+ #{
+ comment => <<"Set retry higher\nwith many lines also.">>,
+ retry => 10000
+ },
+ #{
+ id => <<"123">>,
+ event => <<"add_comment">>,
+ data => <<"Closing!">>
+ }
+ ], fin, Req),
+ {ok, Req, Opts};
+ <<"multiple">> ->
+ Req = cowboy_req:stream_reply(200,
+ #{<<"content-type">> => <<"text/event-stream">>},
+ Req0),
+ cowboy_req:stream_events(#{
+ event => <<"add_comment">>,
+ data => <<"Comment text.\nWith many lines.">>
+ }, nofin, Req),
+ cowboy_req:stream_events(#{
+ comment => <<"Set retry higher\nwith many lines also.">>,
+ retry => 10000
+ }, nofin, Req),
+ cowboy_req:stream_events(#{
+ id => <<"123">>,
+ event => <<"add_comment">>,
+ data => <<"Closing!">>
+ }, fin, Req),
+ {ok, Req, Opts}
+ end;
do(<<"stream_trailers">>, Req0, Opts) ->
case cowboy_req:binding(arg, Req0) of
<<"large">> ->
diff --git a/test/req_SUITE.erl b/test/req_SUITE.erl
index 520bc48..9042f54 100644
--- a/test/req_SUITE.erl
+++ b/test/req_SUITE.erl
@@ -909,6 +909,55 @@ stream_body_content_length_nofin_error(Config) ->
%% @todo Crash when calling stream_body after calling reply.
%% @todo Crash when calling stream_body before calling stream_reply.
+stream_events_single(Config) ->
+ doc("Streamed event."),
+ {200, Headers, <<
+ "event: add_comment\n"
+ "data: Comment text.\n"
+ "data: With many lines.\n"
+ "\n"
+ >>} = do_get("/resp/stream_events/single", Config),
+ {_, <<"text/event-stream">>} = lists:keyfind(<<"content-type">>, 1, Headers),
+ ok.
+
+stream_events_list(Config) ->
+ doc("Streamed list of events."),
+ {200, Headers, <<
+ "event: add_comment\n"
+ "data: Comment text.\n"
+ "data: With many lines.\n"
+ "\n"
+ ": Set retry higher\n"
+ ": with many lines also.\n"
+ "retry: 10000\n"
+ "\n"
+ "id: 123\n"
+ "event: add_comment\n"
+ "data: Closing!\n"
+ "\n"
+ >>} = do_get("/resp/stream_events/list", Config),
+ {_, <<"text/event-stream">>} = lists:keyfind(<<"content-type">>, 1, Headers),
+ ok.
+
+stream_events_multiple(Config) ->
+ doc("Streamed events via multiple calls."),
+ {200, Headers, <<
+ "event: add_comment\n"
+ "data: Comment text.\n"
+ "data: With many lines.\n"
+ "\n"
+ ": Set retry higher\n"
+ ": with many lines also.\n"
+ "retry: 10000\n"
+ "\n"
+ "id: 123\n"
+ "event: add_comment\n"
+ "data: Closing!\n"
+ "\n"
+ >>} = do_get("/resp/stream_events/multiple", Config),
+ {_, <<"text/event-stream">>} = lists:keyfind(<<"content-type">>, 1, Headers),
+ ok.
+
stream_trailers(Config) ->
doc("Stream body followed by trailer headers."),
{200, RespHeaders, <<"Hello world!">>, [