diff options
Diffstat (limited to 'src/chttpd/test/eunit/chttpd_revs_diff_tests.erl')
-rw-r--r-- | src/chttpd/test/eunit/chttpd_revs_diff_tests.erl | 238 |
1 files changed, 0 insertions, 238 deletions
diff --git a/src/chttpd/test/eunit/chttpd_revs_diff_tests.erl b/src/chttpd/test/eunit/chttpd_revs_diff_tests.erl deleted file mode 100644 index 9a9bd25b7..000000000 --- a/src/chttpd/test/eunit/chttpd_revs_diff_tests.erl +++ /dev/null @@ -1,238 +0,0 @@ -% 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_revs_diff_tests). - --include_lib("couch/include/couch_eunit.hrl"). --include_lib("couch/include/couch_db.hrl"). - --define(TDEF_FE(Name), fun(Arg) -> {atom_to_list(Name), ?_test(Name(Arg))} end). - --define(USER, "chttpd_revs_diff_test_admin"). --define(PASS, "pass"). --define(AUTH, {basic_auth, {?USER, ?PASS}}). --define(JSON, {"Content-Type", "application/json"}). - --define(DOC1, <<"doc1">>). --define(DOC2, <<"doc2">>). --define(REVA, <<"reva">>). --define(REVB, <<"revb">>). --define(REVC, <<"revc">>). --define(REVD, <<"revd">>). - -test_docs() -> - [ - {?DOC1, [?REVB, ?REVA]}, - {?DOC1, [?REVC, ?REVA]}, - {?DOC2, [?REVD]} - ]. - -setup() -> - Hashed = couch_passwords:hash_admin_password(?PASS), - ok = config:set("admins", ?USER, ?b2l(Hashed), _Persist = false), - Addr = config:get("chttpd", "bind_address", "127.0.0.1"), - Db = binary_to_list(?tempdb()), - Port = mochiweb_socket_server:get(chttpd, port), - Url = lists:concat(["http://", Addr, ":", Port, "/"]), - ok = create_db(Url, Db), - ok = create_docs(Url, Db, test_docs()), - {Url, Db}. - -teardown({Url, Db}) -> - delete_db(Url, Db), - ok = config:delete("admins", ?USER, _Persist = false). - -start_couch() -> - test_util:start_couch([chttpd]). - -stop_couch(Ctx) -> - test_util:stop_couch(Ctx). - -chttpd_revs_diff_test_() -> - { - "chttpd _revs_diff tests", - { - setup, - fun start_couch/0, - fun stop_couch/1, - { - foreach, - fun setup/0, - fun teardown/1, - [ - ?TDEF_FE(t_empty_revs_diff), - ?TDEF_FE(t_revs_diff_no_revs), - ?TDEF_FE(t_revs_diff_non_existent_doc), - ?TDEF_FE(t_revs_diff_all_revs), - ?TDEF_FE(t_revs_diff_some_missing_some_not), - ?TDEF_FE(t_empty_missing_revs), - ?TDEF_FE(t_missing_revs_no_revs), - ?TDEF_FE(t_missing_revs_non_existent_doc), - ?TDEF_FE(t_missing_revs_all_revs), - ?TDEF_FE(t_missing_revs_some_missing_some_not) - ] - } - } - }. - -t_empty_revs_diff({Top, Db}) -> - {Code, Res} = req(post, Top ++ Db ++ "/_revs_diff", #{}), - ?assertEqual(200, Code), - ?assertEqual(#{}, Res). - -t_revs_diff_no_revs({Top, Db}) -> - Body = #{?DOC1 => [], <<"non_existent_doc">> => []}, - {Code, Res} = req(post, Top ++ Db ++ "/_revs_diff", Body), - ?assertEqual(200, Code), - ?assertEqual(#{}, Res). - -t_revs_diff_non_existent_doc({Top, Db}) -> - Body = #{<<"non_existent_doc">> => [<<"1-rev">>]}, - {Code, Res} = req(post, Top ++ Db ++ "/_revs_diff", Body), - ?assertEqual(200, Code), - ?assertEqual( - #{ - <<"non_existent_doc">> => #{ - <<"missing">> => [<<"1-rev">>] - } - }, - Res - ). - -t_revs_diff_all_revs({Top, Db}) -> - Body = #{ - ?DOC1 => [<<"2-", ?REVB/binary>>, <<"2-", ?REVC/binary>>], - ?DOC2 => [<<"1-", ?REVD/binary>>] - }, - {Code, Res} = req(post, Top ++ Db ++ "/_revs_diff", Body), - ?assertEqual(200, Code), - ?assertEqual(#{}, Res). - -t_revs_diff_some_missing_some_not({Top, Db}) -> - Body = #{ - ?DOC1 => [<<"2-", ?REVB/binary>>, <<"1-xyz">>, <<"2-def">>, <<"3-klm">>], - ?DOC2 => [<<"1-pqr">>] - }, - {Code, Res} = req(post, Top ++ Db ++ "/_revs_diff", Body), - ?assertEqual(200, Code), - ?assertEqual( - #{ - ?DOC1 => #{ - <<"missing">> => [<<"1-xyz">>, <<"2-def">>, <<"3-klm">>], - <<"possible_ancestors">> => [<<"2-revb">>, <<"2-revc">>] - }, - ?DOC2 => #{ - <<"missing">> => [<<"1-pqr">>] - } - }, - Res - ). - -t_empty_missing_revs({Top, Db}) -> - {Code, Res} = req(post, Top ++ Db ++ "/_missing_revs", #{}), - ?assertEqual(200, Code), - ?assertEqual(#{<<"missing_revs">> => #{}}, Res). - -t_missing_revs_no_revs({Top, Db}) -> - Body = #{?DOC1 => [], <<"non_existent_doc">> => []}, - {Code, Res} = req(post, Top ++ Db ++ "/_missing_revs", Body), - ?assertEqual(200, Code), - ?assertEqual(#{<<"missing_revs">> => #{}}, Res). - -t_missing_revs_non_existent_doc({Top, Db}) -> - Body = #{<<"non_existent_doc">> => [<<"1-rev">>]}, - {Code, Res} = req(post, Top ++ Db ++ "/_missing_revs", Body), - ?assertEqual(200, Code), - ?assertEqual( - #{ - <<"missing_revs">> => #{ - <<"non_existent_doc">> => [<<"1-rev">>] - } - }, - Res - ). - -t_missing_revs_all_revs({Top, Db}) -> - Body = #{ - ?DOC1 => [<<"2-", ?REVB/binary>>, <<"2-", ?REVC/binary>>], - ?DOC2 => [<<"1-", ?REVD/binary>>] - }, - {Code, Res} = req(post, Top ++ Db ++ "/_missing_revs", Body), - ?assertEqual(200, Code), - ?assertEqual(#{<<"missing_revs">> => #{}}, Res). - -t_missing_revs_some_missing_some_not({Top, Db}) -> - Body = #{ - ?DOC1 => [<<"2-", ?REVB/binary>>, <<"1-xyz">>, <<"2-def">>, <<"3-klm">>], - ?DOC2 => [<<"1-pqr">>] - }, - {Code, Res} = req(post, Top ++ Db ++ "/_missing_revs", Body), - ?assertEqual(200, Code), - ?assertEqual( - #{ - <<"missing_revs">> => #{ - ?DOC1 => [<<"1-xyz">>, <<"2-def">>, <<"3-klm">>], - ?DOC2 => [<<"1-pqr">>] - } - }, - Res - ). - -create_db(Top, Db) -> - case req(put, Top ++ Db) of - {201, #{}} -> - ok; - Error -> - error({failed_to_create_test_db, Db, Error}) - end. - -delete_db(Top, Db) -> - case req(delete, Top ++ Db) of - {200, #{}} -> - ok; - Error -> - error({failed_to_delete_test_db, Db, Error}) - end. - -create_docs(Top, Db, DocRevs) -> - Docs = lists:map( - fun({Id, Revs}) -> - #{ - <<"_id">> => Id, - <<"_revisions">> => #{ - <<"ids">> => Revs, - <<"start">> => length(Revs) - } - } - end, - DocRevs - ), - Body = #{ - <<"docs">> => Docs, - <<"new_edits">> => false - }, - {Code, Res} = req(post, Top ++ Db ++ "/_bulk_docs", Body), - ?assertEqual(201, Code), - ?assertEqual([], Res), - ok. - -req(Method, Url) -> - Headers = [?JSON, ?AUTH], - {ok, Code, _, Res} = test_request:request(Method, Url, Headers), - {Code, jiffy:decode(Res, [return_maps])}. - -req(Method, Url, #{} = Body) -> - req(Method, Url, jiffy:encode(Body)); -req(Method, Url, Body) -> - Headers = [?JSON, ?AUTH], - {ok, Code, _, Res} = test_request:request(Method, Url, Headers, Body), - {Code, jiffy:decode(Res, [return_maps])}. |