0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00

Add test cases for cowboy_req:stream_events

This commit is contained in:
Loïc Hoguin 2018-06-27 13:40:11 +02:00
parent faefb634de
commit 0fb68ec07f
No known key found for this signature in database
GPG key ID: 8A9DF795F6FED764
2 changed files with 101 additions and 0 deletions

View file

@ -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">> ->

View file

@ -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!">>, [