blob: c6c039eb02ab90f165ab739ef8d2b45cf6d9d119 [file] [log] [blame]
% 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(couchdb_location_header_tests).
-include_lib("couch/include/couch_eunit.hrl").
-include_lib("couch/include/couch_db.hrl").
-define(TIMEOUT, 1000).
setup() ->
DbName = ?tempdb(),
{ok, Db} = couch_db:create(DbName, [?ADMIN_CTX]),
couch_db:close(Db),
Addr = config:get("httpd", "bind_address", "127.0.0.1"),
Port = integer_to_list(mochiweb_socket_server:get(couch_httpd, port)),
Host = "http://" ++ Addr ++ ":" ++ Port,
{Host, ?b2l(DbName)}.
teardown({_, DbName}) ->
ok = couch_server:delete(?l2b(DbName), [?ADMIN_CTX]),
ok.
header_test_() ->
{
"CouchDB Location Header Tests",
{
setup,
fun test_util:start_couch/0, fun test_util:stop_couch/1,
{
foreach,
fun setup/0, fun teardown/1,
[
fun should_work_with_newlines_in_docs/1,
fun should_work_with_newlines_in_attachments/1
]
}
}
}.
should_work_with_newlines_in_docs({Host, DbName}) ->
Url = Host ++ "/" ++ DbName ++ "/docid%0A",
{"COUCHDB-708",
?_assertEqual(
Url,
begin
{ok, _, Headers, _} = test_request:put(Url,
[{"Content-Type", "application/json"}], "{}"),
proplists:get_value("Location", Headers)
end)}.
should_work_with_newlines_in_attachments({Host, DbName}) ->
Url = Host ++ "/" ++ DbName,
AttUrl = Url ++ "/docid%0A/readme.txt",
{"COUCHDB-708",
?_assertEqual(
AttUrl,
begin
Body = "We all live in a yellow submarine!",
Headers0 = [
{"Content-Length", "34"},
{"Content-Type", "text/plain"}
],
{ok, _, Headers, _} = test_request:put(AttUrl, Headers0, Body),
proplists:get_value("Location", Headers)
end)}.