aboutsummaryrefslogtreecommitdiffstats
path: root/test/rest_handler_SUITE.erl
diff options
context:
space:
mode:
Diffstat (limited to 'test/rest_handler_SUITE.erl')
-rw-r--r--test/rest_handler_SUITE.erl33
1 files changed, 26 insertions, 7 deletions
diff --git a/test/rest_handler_SUITE.erl b/test/rest_handler_SUITE.erl
index e026552..a3d9533 100644
--- a/test/rest_handler_SUITE.erl
+++ b/test/rest_handler_SUITE.erl
@@ -1,4 +1,4 @@
-%% Copyright (c) 2017-2024, Loïc Hoguin <[email protected]>
+%% Copyright (c) Loïc Hoguin <[email protected]>
%%
%% Permission to use, copy, modify, and/or distribute this software for any
%% purpose with or without fee is hereby granted, provided that the above
@@ -32,7 +32,7 @@ init_per_group(Name, Config) ->
cowboy_test:init_common_groups(Name, Config, ?MODULE).
end_per_group(Name, _) ->
- cowboy:stop_listener(Name).
+ cowboy_test:stop_group(Name).
%% Dispatch configuration.
@@ -85,7 +85,7 @@ accept_callback_missing(Config) ->
{<<"accept-encoding">>, <<"gzip">>},
{<<"content-type">>, <<"text/plain">>}
], <<"Missing!">>),
- {response, fin, 500, _} = gun:await(ConnPid, Ref),
+ {response, fin, 500, _} = do_maybe_h3_error(gun:await(ConnPid, Ref)),
ok.
accept_callback_patch_false(Config) ->
@@ -404,6 +404,18 @@ content_types_accepted_wildcard_param_content_type_with_param(Config) ->
{response, fin, 204, _} = gun:await(ConnPid, Ref),
ok.
+content_types_provided_invalid_type(Config) ->
+ doc("When an invalid type is returned from the "
+ "content_types_provided callback, the "
+ "resource is incorrect and a 500 response is expected."),
+ ConnPid = gun_open(Config),
+ Ref = gun:get(ConnPid, "/content_types_provided?invalid-type", [
+ {<<"accept">>, <<"*/*">>},
+ {<<"accept-encoding">>, <<"gzip">>}
+ ]),
+ {response, _, 500, _} = do_maybe_h3_error(gun:await(ConnPid, Ref)),
+ ok.
+
content_types_provided_wildcard_param_no_accept_param(Config) ->
doc("When a wildcard is returned for parameters from the "
"content_types_provided callback, an accept header "
@@ -472,7 +484,7 @@ delete_resource_missing(Config) ->
Ref = gun:delete(ConnPid, "/delete_resource?missing", [
{<<"accept-encoding">>, <<"gzip">>}
]),
- {response, _, 500, _} = gun:await(ConnPid, Ref),
+ {response, _, 500, _} = do_maybe_h3_error(gun:await(ConnPid, Ref)),
ok.
create_resource_created(Config) ->
@@ -650,10 +662,16 @@ do_generate_etag(Config, Qs, ReqHeaders, Status, Etag) ->
{<<"accept-encoding">>, <<"gzip">>}
|ReqHeaders
]),
- {response, _, Status, RespHeaders} = gun:await(ConnPid, Ref),
+ {response, _, Status, RespHeaders} = do_maybe_h3_error(gun:await(ConnPid, Ref)),
Etag = lists:keyfind(<<"etag">>, 1, RespHeaders),
ok.
+%% See do_maybe_h3_error2 comment.
+do_maybe_h3_error({error, {stream_error, {stream_error, h3_internal_error, _}}}) ->
+ {response, fin, 500, []};
+do_maybe_h3_error(Result) ->
+ Result.
+
if_range_etag_equal(Config) ->
doc("When the if-range header matches, a 206 partial content "
"response is expected for an otherwise valid range request. (RFC7233 3.2)"),
@@ -799,6 +817,7 @@ provide_callback(Config) ->
]),
{response, nofin, 200, Headers} = gun:await(ConnPid, Ref),
{_, <<"text/plain">>} = lists:keyfind(<<"content-type">>, 1, Headers),
+ {_, <<"HEAD, GET, OPTIONS">>} = lists:keyfind(<<"allow">>, 1, Headers),
{ok, <<"This is REST!">>} = gun:await_body(ConnPid, Ref),
ok.
@@ -806,7 +825,7 @@ provide_callback_missing(Config) ->
doc("A 500 response must be sent when the ProvideCallback can't be called."),
ConnPid = gun_open(Config),
Ref = gun:get(ConnPid, "/provide_callback_missing", [{<<"accept-encoding">>, <<"gzip">>}]),
- {response, fin, 500, _} = gun:await(ConnPid, Ref),
+ {response, fin, 500, _} = do_maybe_h3_error(gun:await(ConnPid, Ref)),
ok.
provide_range_callback(Config) ->
@@ -962,7 +981,7 @@ provide_range_callback_missing(Config) ->
{<<"accept-encoding">>, <<"gzip">>},
{<<"range">>, <<"bytes=0-">>}
]),
- {response, fin, 500, _} = gun:await(ConnPid, Ref),
+ {response, fin, 500, _} = do_maybe_h3_error(gun:await(ConnPid, Ref)),
ok.
range_ignore_unknown_unit(Config) ->