aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/req_SUITE.erl31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/req_SUITE.erl b/test/req_SUITE.erl
index 66d42c9..3b32b3a 100644
--- a/test/req_SUITE.erl
+++ b/test/req_SUITE.erl
@@ -475,6 +475,26 @@ do_multipart(Path, Config) ->
} = LargeHeaders,
ok.
+multipart_error_empty(Config) ->
+ doc("Multipart request body is empty."),
+ %% We use an empty list as a body to make sure Gun knows
+ %% we want to send an empty body.
+ %% @todo This is a terrible hack. Improve Gun!
+ Body = [],
+ %% Ensure an empty body results in a 400 error.
+ {400, _} = do_body_error("POST", "/multipart", [
+ {<<"content-type">>, <<"multipart/mixed; boundary=deadbeef">>}
+ ], Body, Config),
+ ok.
+
+multipart_error_preamble_only(Config) ->
+ doc("Multipart request body only contains a preamble."),
+ %% Ensure an empty body results in a 400 error.
+ {400, _} = do_body_error("POST", "/multipart", [
+ {<<"content-type">>, <<"multipart/mixed; boundary=deadbeef">>}
+ ], <<"Preamble.">>, Config),
+ ok.
+
multipart_error_headers(Config) ->
doc("Multipart request body with invalid part headers."),
ReqBody = [
@@ -490,6 +510,17 @@ multipart_error_headers(Config) ->
%% The function to parse the multipart body currently does not crash,
%% as far as I can tell. There is therefore no test for it.
+multipart_error_no_final_boundary(Config) ->
+ doc("Multipart request body with no final boundary."),
+ ReqBody = [
+ "--deadbeef\r\nContent-Type: text/plain\r\n\r\nCowboy is an HTTP server.\r\n"
+ ],
+ %% Ensure parse errors result in a 400 response.
+ {400, _} = do_body_error("POST", "/multipart", [
+ {<<"content-type">>, <<"multipart/mixed; boundary=deadbeef">>}
+ ], ReqBody, Config),
+ ok.
+
multipart_missing_boundary(Config) ->
doc("Multipart request body without a boundary in the media type."),
ReqBody = [