summaryrefslogtreecommitdiff
path: root/deps/chttpd/test/chttpd_delayed_response_test.erl
diff options
context:
space:
mode:
Diffstat (limited to 'deps/chttpd/test/chttpd_delayed_response_test.erl')
-rw-r--r--deps/chttpd/test/chttpd_delayed_response_test.erl43
1 files changed, 43 insertions, 0 deletions
diff --git a/deps/chttpd/test/chttpd_delayed_response_test.erl b/deps/chttpd/test/chttpd_delayed_response_test.erl
new file mode 100644
index 00000000..f6509dd2
--- /dev/null
+++ b/deps/chttpd/test/chttpd_delayed_response_test.erl
@@ -0,0 +1,43 @@
+%% Copyright 2011 Cloudant
+%%
+%% Licensed under the Apache License, Version 2.0 (the "License"); you may not
+%% use this file except in compliance with the License. You may obtain a copy of
+%% the License at
+%%
+%% http://www.apache.org/licenses/LICENSE-2.0
+%%
+%% Unless required by applicable law or agreed to in writing, software
+%% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+%% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+%% License for the specific language governing permissions and limitations under
+%% the License.
+
+-module(chttpd_delayed_response_test).
+-include_lib("eunit/include/eunit.hrl").
+-include_lib("couch/include/couch_db.hrl").
+
+all_test_() ->
+ {foreach,
+ fun() -> application:load(couch) end,
+ fun(_) -> application:unload(couch) end,
+ [
+ fun delayed_chunked_response/1,
+ fun delayed_chunked_response_after_error/1
+ ]}.
+
+delayed_chunked_response(_) ->
+ {"sending an error first should be ok",
+ fun() ->
+ Req = #httpd{mochi_req=mock_request:new(nil, get, "/", {1, 1}, [])},
+ {ok, Resp} = chttpd:start_delayed_chunked_response(Req, 200, []),
+ ?assertMatch({ok, _}, chttpd:send_delayed_error(Resp, bad_request))
+ end}.
+
+delayed_chunked_response_after_error(_) ->
+ {"sending an error midstream should throw http_abort",
+ fun() ->
+ Req = #httpd{mochi_req=mock_request:new(nil, get, "/", {1, 1}, [])},
+ {ok, Resp} = chttpd:start_delayed_chunked_response(Req, 200, []),
+ {ok, Resp1} = chttpd:send_delayed_chunk(Resp, <<>>),
+ ?assertThrow({http_abort, _, _}, chttpd:send_delayed_error(Resp1, bad_request))
+ end}.