aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2012-11-29 14:33:45 +0100
committerLoïc Hoguin <[email protected]>2012-11-29 16:15:28 +0100
commit5f6b6b6f6d2fbae74d09a75d3b27446a99bc2d5e (patch)
treef3627e94f65ac76e9869b9fab1c9a9215db2a207 /test
parent6ec12f7ce87eb51564d01361ef82dd725036514e (diff)
downloadcowboy-5f6b6b6f6d2fbae74d09a75d3b27446a99bc2d5e.tar.gz
cowboy-5f6b6b6f6d2fbae74d09a75d3b27446a99bc2d5e.tar.bz2
cowboy-5f6b6b6f6d2fbae74d09a75d3b27446a99bc2d5e.zip
Add a better error message when user callbacks are not exported
Diffstat (limited to 'test')
-rw-r--r--test/http_SUITE.erl20
-rw-r--r--test/rest_missing_callbacks.erl21
2 files changed, 41 insertions, 0 deletions
diff --git a/test/http_SUITE.erl b/test/http_SUITE.erl
index 4820f89..238b28e 100644
--- a/test/http_SUITE.erl
+++ b/test/http_SUITE.erl
@@ -50,6 +50,8 @@
-export([pipeline/1]).
-export([rest_keepalive/1]).
-export([rest_keepalive_post/1]).
+-export([rest_missing_get_callbacks/1]).
+-export([rest_missing_put_callbacks/1]).
-export([rest_nodelete/1]).
-export([rest_resource_etags/1]).
-export([rest_resource_etags_if_none_match/1]).
@@ -95,6 +97,8 @@ groups() ->
pipeline,
rest_keepalive,
rest_keepalive_post,
+ rest_missing_get_callbacks,
+ rest_missing_put_callbacks,
rest_nodelete,
rest_resource_etags,
rest_resource_etags_if_none_match,
@@ -250,6 +254,8 @@ init_dispatch(Config) ->
{[<<"simple">>], rest_simple_resource, []},
{[<<"forbidden_post">>], rest_forbidden_resource, [true]},
{[<<"simple_post">>], rest_forbidden_resource, [false]},
+ {[<<"missing_get_callbacks">>], rest_missing_callbacks, []},
+ {[<<"missing_put_callbacks">>], rest_missing_callbacks, []},
{[<<"nodelete">>], rest_nodelete_resource, []},
{[<<"resetags">>], rest_resource_etags, []},
{[<<"loop_timeout">>], http_handler_loop_timeout, []},
@@ -691,6 +697,20 @@ rest_keepalive_post_loop(Config, Client, forbidden_post, N) ->
= lists:keyfind(<<"connection">>, 1, RespHeaders),
rest_keepalive_post_loop(Config, Client3, simple_post, N - 1).
+rest_missing_get_callbacks(Config) ->
+ Client = ?config(client, Config),
+ {ok, Client2} = cowboy_client:request(<<"GET">>,
+ build_url("/missing_get_callbacks", Config), Client),
+ {ok, 500, _, _} = cowboy_client:response(Client2).
+
+rest_missing_put_callbacks(Config) ->
+ Client = ?config(client, Config),
+ {ok, Client2} = cowboy_client:request(<<"PUT">>,
+ build_url("/missing_put_callbacks", Config),
+ [{<<"content-type">>, <<"application/json">>}],
+ <<"{}">>, Client),
+ {ok, 500, _, _} = cowboy_client:response(Client2).
+
rest_nodelete(Config) ->
Client = ?config(client, Config),
{ok, Client2} = cowboy_client:request(<<"DELETE">>,
diff --git a/test/rest_missing_callbacks.erl b/test/rest_missing_callbacks.erl
new file mode 100644
index 0000000..171c856
--- /dev/null
+++ b/test/rest_missing_callbacks.erl
@@ -0,0 +1,21 @@
+-module(rest_missing_callbacks).
+-export([init/3]).
+-export([allowed_methods/2]).
+-export([content_types_accepted/2]).
+-export([content_types_provided/2]).
+
+init(_Transport, _Req, _Opts) ->
+ {upgrade, protocol, cowboy_rest}.
+
+allowed_methods(Req, State) ->
+ {[<<"GET">>, <<"PUT">>], Req, State}.
+
+content_types_accepted(Req, State) ->
+ {[
+ {<<"application/json">>, put_application_json}
+ ], Req, State}.
+
+content_types_provided(Req, State) ->
+ {[
+ {<<"text/plain">>, get_text_plain}
+ ], Req, State}.