summaryrefslogtreecommitdiff
path: root/src/global_changes/test/eunit/global_changes_hooks_tests.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/global_changes/test/eunit/global_changes_hooks_tests.erl')
-rw-r--r--src/global_changes/test/eunit/global_changes_hooks_tests.erl164
1 files changed, 0 insertions, 164 deletions
diff --git a/src/global_changes/test/eunit/global_changes_hooks_tests.erl b/src/global_changes/test/eunit/global_changes_hooks_tests.erl
deleted file mode 100644
index 5d6bbd13d..000000000
--- a/src/global_changes/test/eunit/global_changes_hooks_tests.erl
+++ /dev/null
@@ -1,164 +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(global_changes_hooks_tests).
-
--include_lib("couch/include/couch_eunit.hrl").
--include_lib("couch/include/couch_db.hrl").
-
--export([allowed_owner/2]).
-
--define(t2l(V), lists:flatten(io_lib:format("~p", [V]))).
-
-start() ->
- Ctx = test_util:start_couch([chttpd, global_changes]),
- DbName = ?tempdb(),
- ok = fabric:create_db(DbName, [?ADMIN_CTX]),
- application:set_env(global_changes, dbname, DbName),
- {Ctx, DbName}.
-
-stop({Ctx, DbName}) ->
- ok = fabric:delete_db(DbName, [?ADMIN_CTX]),
- test_util:stop_couch(Ctx),
- ok.
-
-setup(default) ->
- add_admin("admin", <<"pass">>),
- config:delete("chttpd_auth", "authentication_redirect", false),
- config:set("chttpd_auth", "require_valid_user", "false", false),
- get_host();
-setup(A) ->
- Host = setup(default),
- ok = config:set(
- "global_changes",
- "allowed_owner",
- ?t2l({?MODULE, allowed_owner, A}),
- false
- ),
- Host.
-
-teardown(_) ->
- delete_admin("admin"),
- config:delete("global_changes", "allowed_owner", false),
- ok.
-
-allowed_owner(_Req, "throw") ->
- throw({unauthorized, <<"Exception thrown.">>});
-allowed_owner(_Req, "pass") ->
- "super".
-
-allowed_owner_hook_test_() ->
- {
- "Check allowed_owner hook",
- {
- setup,
- fun start/0,
- fun stop/1,
- [
- disabled_allowed_owner_integration_point(),
- enabled_allowed_owner_integration_point()
- ]
- }
- }.
-
-disabled_allowed_owner_integration_point() ->
- {
- "disabled allowed_owner integration point",
- {
- foreach,
- fun() -> setup(default) end,
- fun teardown/1,
- [
- fun should_not_fail_for_admin/1,
- fun should_fail_for_non_admin/1
- ]
- }
- }.
-
-enabled_allowed_owner_integration_point() ->
- {
- "enabled allowed_owner integration point",
- [
- {
- foreach,
- fun() -> setup("throw") end,
- fun teardown/1,
- [fun should_throw/1]
- },
- {
- foreach,
- fun() -> setup("pass") end,
- fun teardown/1,
- [fun should_pass/1]
- }
- ]
- }.
-
-should_not_fail_for_admin(Host) ->
- ?_test(begin
- Headers = [{basic_auth, {"admin", "pass"}}],
- {Status, [Error, Reason]} =
- request(Host, Headers, [<<"error">>, <<"reason">>]),
- ?assertEqual(200, Status),
- ?assertEqual(undefined, Error),
- ?assertEqual(undefined, Reason)
- end).
-
-should_fail_for_non_admin(Host) ->
- ?_test(begin
- Headers = [],
- {Status, [Error, Reason]} =
- request(Host, Headers, [<<"error">>, <<"reason">>]),
- ?assertEqual(401, Status),
- ?assertEqual(<<"unauthorized">>, Error),
- ?assertEqual(<<"You are not a server admin.">>, Reason)
- end).
-
-should_pass(Host) ->
- ?_test(begin
- Headers = [{basic_auth, {"admin", "pass"}}],
- {Status, [Error, Reason]} =
- request(Host, Headers, [<<"error">>, <<"reason">>]),
- ?assertEqual(200, Status),
- ?assertEqual(undefined, Error),
- ?assertEqual(undefined, Reason)
- end).
-
-should_throw(Host) ->
- ?_test(begin
- Headers = [{basic_auth, {"admin", "pass"}}],
- {Status, [Error, Reason]} =
- request(Host, Headers, [<<"error">>, <<"reason">>]),
- ?assertEqual(401, Status),
- ?assertEqual(<<"unauthorized">>, Error),
- ?assertEqual(<<"Exception thrown.">>, Reason)
- end).
-
-request(Host, Headers, ToDecode) ->
- Url = Host ++ "/_db_updates",
- {ok, Status, _Headers, BinBody} = test_request:get(Url, Headers),
- {Body} = jiffy:decode(BinBody),
- Values = [couch_util:get_value(Key, Body) || Key <- ToDecode],
- {Status, Values}.
-
-add_admin(User, Pass) ->
- Hashed = couch_passwords:hash_admin_password(Pass),
- config:set("admins", User, ?b2l(Hashed), false).
-
-delete_admin(User) ->
- config:delete("admins", User, false).
-
-get_host() ->
- Addr = config:get("httpd", "bind_address", "127.0.0.1"),
- Port = integer_to_list(mochiweb_socket_server:get(chttpd, port)),
- Host = "http://" ++ Addr ++ ":" ++ Port,
- Host.