From b3bfcf068c20573ae06df42530f1a6d4dc6842c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Wed, 31 Oct 2018 22:41:59 +0100 Subject: Add a cowboy_rest test for malformed if-*-match headers --- test/handlers/rest_hello_h.erl | 16 ++++++++++++++++ test/rest_handler_SUITE.erl | 21 +++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 test/handlers/rest_hello_h.erl (limited to 'test') diff --git a/test/handlers/rest_hello_h.erl b/test/handlers/rest_hello_h.erl new file mode 100644 index 0000000..a40d6ac --- /dev/null +++ b/test/handlers/rest_hello_h.erl @@ -0,0 +1,16 @@ +%% This module sends a hello world response via a REST handler. + +-module(rest_hello_h). + +-export([init/2]). +-export([content_types_provided/2]). +-export([get_text_plain/2]). + +init(Req, Opts) -> + {cowboy_rest, Req, Opts}. + +content_types_provided(Req, State) -> + {[{{<<"text">>, <<"plain">>, []}, get_text_plain}], Req, State}. + +get_text_plain(Req, State) -> + {<<"This is REST!">>, Req, State}. diff --git a/test/rest_handler_SUITE.erl b/test/rest_handler_SUITE.erl index 1d9619c..a9884b5 100644 --- a/test/rest_handler_SUITE.erl +++ b/test/rest_handler_SUITE.erl @@ -38,6 +38,7 @@ end_per_group(Name, _) -> init_dispatch(_) -> cowboy_router:compile([{'_', [ + {"/", rest_hello_h, []}, {"/provide_callback_missing", provide_callback_missing_h, []}, {"/switch_handler", switch_handler_h, run}, {"/switch_handler_opts", switch_handler_h, hibernate} @@ -53,6 +54,26 @@ do_decode(Headers, Body) -> %% Tests. +error_on_malformed_if_match(Config) -> + doc("A malformed If-Match header must result in a 400 response."), + ConnPid = gun_open(Config), + Ref = gun:get(ConnPid, "/", [ + {<<"accept-encoding">>, <<"gzip">>}, + {<<"if-match">>, <<"bad">>} + ]), + {response, _, 400, _} = gun:await(ConnPid, Ref), + ok. + +error_on_malformed_if_none_match(Config) -> + doc("A malformed If-None-Match header must result in a 400 response."), + ConnPid = gun_open(Config), + Ref = gun:get(ConnPid, "/", [ + {<<"accept-encoding">>, <<"gzip">>}, + {<<"if-none-match">>, <<"bad">>} + ]), + {response, _, 400, _} = gun:await(ConnPid, Ref), + ok. + provide_callback_missing(Config) -> doc("A 500 response must be sent when the ProvideCallback can't be called."), ConnPid = gun_open(Config), -- cgit v1.2.3