aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorTom Burdick <[email protected]>2012-10-23 14:37:46 -0500
committerTom Burdick <[email protected]>2013-01-29 13:12:53 -0600
commit8a798014e980d596e631cf5f24957ee15f9a1ac4 (patch)
treea8412e9880342f77c4c9713d90e87aeef0701e67 /test
parenta59c5d6e913e62c0102b4213b0a19a4a403fcf98 (diff)
downloadcowboy-8a798014e980d596e631cf5f24957ee15f9a1ac4.tar.gz
cowboy-8a798014e980d596e631cf5f24957ee15f9a1ac4.tar.bz2
cowboy-8a798014e980d596e631cf5f24957ee15f9a1ac4.zip
allow POST rest handling to specify path after accepting content
Diffstat (limited to 'test')
-rw-r--r--test/http_SUITE.erl15
-rw-r--r--test/rest_created_path_resource.erl35
2 files changed, 50 insertions, 0 deletions
diff --git a/test/http_SUITE.erl b/test/http_SUITE.erl
index 492863f..0b35cf3 100644
--- a/test/http_SUITE.erl
+++ b/test/http_SUITE.erl
@@ -50,6 +50,7 @@
-export([onresponse_reply/1]).
-export([pipeline/1]).
-export([rest_bad_accept/1]).
+-export([rest_created_path/1]).
-export([rest_expires/1]).
-export([rest_keepalive/1]).
-export([rest_keepalive_post/1]).
@@ -112,6 +113,7 @@ groups() ->
nc_zero,
pipeline,
rest_bad_accept,
+ rest_created_path,
rest_expires,
rest_keepalive,
rest_keepalive_post,
@@ -334,6 +336,7 @@ init_dispatch(Config) ->
{"/missing_put_callbacks", rest_missing_callbacks, []},
{"/nodelete", rest_nodelete_resource, []},
{"/patch", rest_patch_resource, []},
+ {"/created_path", rest_created_path_resource, []},
{"/resetags", rest_resource_etags, []},
{"/rest_expires", rest_expires, []},
{"/loop_timeout", http_handler_loop_timeout, []},
@@ -763,6 +766,18 @@ rest_bad_accept(Config) ->
Client),
{ok, 400, _, _} = cowboy_client:response(Client2).
+rest_created_path(Config) ->
+ Headers = [{<<"content-type">>, <<"text/plain">>}],
+ Body = <<"Whatever">>,
+ Client = ?config(client, Config),
+ URL = build_url("/created_path", Config),
+ {ok, Client2} = cowboy_client:request(<<"POST">>, URL, Headers,
+ Body, Client),
+ {ok, 303, ResHeaders, _} = cowboy_client:response(Client2),
+ {<<"location">>, _Location} =
+ lists:keyfind(<<"location">>, 1, ResHeaders),
+ ok.
+
rest_expires(Config) ->
Client = ?config(client, Config),
{ok, Client2} = cowboy_client:request(<<"GET">>,
diff --git a/test/rest_created_path_resource.erl b/test/rest_created_path_resource.erl
new file mode 100644
index 0000000..5ad8cfc
--- /dev/null
+++ b/test/rest_created_path_resource.erl
@@ -0,0 +1,35 @@
+-module(rest_created_path_resource).
+-export([init/3]).
+-export([allowed_methods/2]).
+-export([content_types_provided/2]).
+-export([get_text_plain/2]).
+-export([post_is_create/2]).
+-export([content_types_accepted/2]).
+-export([post_text_plain/2]).
+-export([created_path/2]).
+
+init(_Transport, _Req, _Opts) ->
+ {upgrade, protocol, cowboy_rest}.
+
+allowed_methods(Req, State) ->
+{[<<"HEAD">>, <<"GET">>, <<"POST">>], Req, State}.
+
+content_types_provided(Req, State) ->
+ {[{{<<"text">>, <<"plain">>, []}, get_text_plain}], Req, State}.
+
+get_text_plain(Req, State) ->
+ {<<"This is REST!">>, Req, State}.
+
+post_is_create(Req, State) ->
+ {true, Req, State}.
+
+content_types_accepted(Req, State) ->
+ {[{{<<"text">>, <<"plain">>, []}, post_text_plain}], Req, State}.
+
+post_text_plain(Req, State) ->
+ {true, Req, State}.
+
+created_path(Req, State) ->
+ {<<"/created">>, Req, State}.
+
+