aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2018-06-27 13:40:11 +0200
committerLoïc Hoguin <[email protected]>2018-06-27 13:40:11 +0200
commit0fb68ec07fa8096ecbc124896b56297fad818ae0 (patch)
tree27b61b3ae2fcff6da09450242a22f18cb3537c5b /test
parentfaefb634de2874cafaf7f2d7fb7d4f8eab9019a9 (diff)
downloadcowboy-0fb68ec07fa8096ecbc124896b56297fad818ae0.tar.gz
cowboy-0fb68ec07fa8096ecbc124896b56297fad818ae0.tar.bz2
cowboy-0fb68ec07fa8096ecbc124896b56297fad818ae0.zip
Add test cases for cowboy_req:stream_events
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!">>, [