aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMickael Remond <mremond@process-one.net>2016-07-26 12:17:37 +0200
committerMickael Remond <mremond@process-one.net>2016-07-26 12:17:37 +0200
commit2a8005e47fdb7dbeff27dde41550221823bdb75d (patch)
tree3305d8cd8649857bb100469f285a1b4a8104c0a5 /test
parentClarify command module API (diff)
Add ability to run test with Elixir mix
Diffstat (limited to 'test')
-rw-r--r--test/ejabberd_commands_mock_test.exs4
-rw-r--r--test/ejabberd_commands_test.exs22
-rw-r--r--test/ejabberd_cyrsasl_test.exs10
-rw-r--r--test/mod_admin_extra_test.exs3
-rw-r--r--test/mod_http_api_mock_test.exs6
-rw-r--r--test/mod_http_api_test.exs18
-rw-r--r--test/test_helper.exs7
7 files changed, 52 insertions, 18 deletions
diff --git a/test/ejabberd_commands_mock_test.exs b/test/ejabberd_commands_mock_test.exs
index 72e7c2d3a..439a3c1d3 100644
--- a/test/ejabberd_commands_mock_test.exs
+++ b/test/ejabberd_commands_mock_test.exs
@@ -23,6 +23,8 @@
defmodule EjabberdCommandsMockTest do
use ExUnit.Case, async: false
+ require EjabberdOauthMock
+
@author "jsautret@process-one.net"
# mocked callback module
@@ -50,7 +52,7 @@ defmodule EjabberdCommandsMockTest do
:ok = :ejabberd_config.start(["domain1", "domain2"], [])
:ok = :acl.start
EjabberdOauthMock.init
- :ok
+ on_exit fn -> :meck.unload end
end
setup do
diff --git a/test/ejabberd_commands_test.exs b/test/ejabberd_commands_test.exs
index 31d108214..10b656140 100644
--- a/test/ejabberd_commands_test.exs
+++ b/test/ejabberd_commands_test.exs
@@ -28,7 +28,11 @@ defmodule EjabberdCommandsTest do
setup_all do
:mnesia.start
+ :stringprep.start
+ :ok = :ejabberd_config.start(["localhost"], [])
+
:ejabberd_commands.init
+ :ok
end
test "Check that we can register a command" do
@@ -37,6 +41,14 @@ defmodule EjabberdCommandsTest do
assert Enum.member?(commands, {:test_user, [], "Test user"})
end
+ test "get_exposed_commands/0 returns registered commands" do
+ commands = [open_test_command]
+ :ok = :ejabberd_commands.register_commands(commands)
+ :ok = :ejabberd_commands.expose_commands(commands)
+ exposed_commands = :ejabberd_commands.get_exposed_commands
+ assert Enum.member?(exposed_commands, :test_open)
+ end
+
test "Check that admin commands are rejected with noauth credentials" do
:ok = :ejabberd_commands.register_commands([admin_test_command])
@@ -70,6 +82,16 @@ defmodule EjabberdCommandsTest do
]}}}})
end
+ defp open_test_command do
+ ejabberd_commands(name: :test_open, tags: [:test],
+ desc: "Test open",
+ policy: :open,
+ module: __MODULE__,
+ function: :test_open,
+ args: [],
+ result: {:res, :rescode})
+ end
+
defp admin_test_command do
ejabberd_commands(name: :test_admin, tags: [:roster],
desc: "Test admin",
diff --git a/test/ejabberd_cyrsasl_test.exs b/test/ejabberd_cyrsasl_test.exs
index 0dc64ee44..d9b949294 100644
--- a/test/ejabberd_cyrsasl_test.exs
+++ b/test/ejabberd_cyrsasl_test.exs
@@ -71,8 +71,8 @@ defmodule EjabberdCyrsaslTest do
response = "username=\"#{user}\",realm=\"#{domain}\",nonce=\"#{nonce}\",cnonce=\"#{cnonce}\"," <>
"nc=\"#{nc}\",qop=auth,digest-uri=\"#{digest_uri}\",response=\"#{response_hash}\"," <>
"charset=utf-8,algorithm=md5-sess"
- assert {:continue, calc_str, state3} = :cyrsasl.server_step(state1, response)
- assert {:ok, list} = :cyrsasl.server_step(state3, "")
+ assert {:continue, _calc_str, state3} = :cyrsasl.server_step(state1, response)
+ assert {:ok, _list} = :cyrsasl.server_step(state3, "")
end
defp calc_digest_sha(user, domain, pass, nc, nonce, cnonce) do
@@ -94,7 +94,7 @@ defmodule EjabberdCyrsaslTest do
defp setup_anonymous_mocks() do
:meck.unload
mock(:ejabberd_auth_anonymous, :is_sasl_anonymous_enabled,
- fn (host) ->
+ fn (_host) ->
true
end)
mock(:ejabberd_auth, :is_user_exists,
@@ -119,7 +119,7 @@ defmodule EjabberdCyrsaslTest do
end
end
- defp check_password(user, authzid, pass) do
+ defp check_password(_user, authzid, pass) do
case get_password(authzid) do
{^pass, mod} ->
{true, mod}
@@ -128,7 +128,7 @@ defmodule EjabberdCyrsaslTest do
end
end
- defp check_password_digest(user, authzid, pass, digest, digest_gen) do
+ defp check_password_digest(_user, authzid, _pass, digest, digest_gen) do
case get_password(authzid) do
{spass, mod} ->
v = digest_gen.(spass)
diff --git a/test/mod_admin_extra_test.exs b/test/mod_admin_extra_test.exs
index 761b07b7c..03422264f 100644
--- a/test/mod_admin_extra_test.exs
+++ b/test/mod_admin_extra_test.exs
@@ -22,6 +22,9 @@ defmodule EjabberdModAdminExtraTest do
use ExUnit.Case, async: false
require EjabberdAuthMock
+ require EjabberdSmMock
+ require ModLastMock
+ require ModRosterMock
@author "jsautret@process-one.net"
diff --git a/test/mod_http_api_mock_test.exs b/test/mod_http_api_mock_test.exs
index fcfdfee13..9cba35365 100644
--- a/test/mod_http_api_mock_test.exs
+++ b/test/mod_http_api_mock_test.exs
@@ -73,7 +73,7 @@ defmodule ModHttpApiMockTest do
end)
:meck.expect(:ejabberd_commands, :get_command_policy_and_scope,
fn (@acommand) -> {:ok, :user, [:erlang.atom_to_binary(@acommand,:utf8)]} end)
- :meck.expect(:ejabberd_commands, :get_commands,
+ :meck.expect(:ejabberd_commands, :get_exposed_commands,
fn () -> [@acommand] end)
:meck.expect(:ejabberd_commands, :execute_command,
fn (:undefined, {@user, @domain, @userpass, false}, @acommand, [], @version, _) ->
@@ -126,7 +126,7 @@ defmodule ModHttpApiMockTest do
end)
:meck.expect(:ejabberd_commands, :get_command_policy_and_scope,
fn (@acommand) -> {:ok, :user, [:erlang.atom_to_binary(@acommand,:utf8), "ejabberd:user"]} end)
- :meck.expect(:ejabberd_commands, :get_commands,
+ :meck.expect(:ejabberd_commands, :get_exposed_commands,
fn () -> [@acommand] end)
:meck.expect(:ejabberd_commands, :execute_command,
fn (:undefined, {@user, @domain, {:oauth, _token}, false},
@@ -219,7 +219,7 @@ defmodule ModHttpApiMockTest do
end)
:meck.expect(:ejabberd_commands, :get_command_policy_and_scope,
fn (@acommand) -> {:ok, :user, [:erlang.atom_to_binary(@acommand,:utf8), "ejabberd:user"]} end)
- :meck.expect(:ejabberd_commands, :get_commands,
+ :meck.expect(:ejabberd_commands, :get_exposed_commands,
fn () -> [@acommand] end)
:meck.expect(:ejabberd_commands, :execute_command,
fn (:undefined, {@user, @domain, {:oauth, _token}, false},
diff --git a/test/mod_http_api_test.exs b/test/mod_http_api_test.exs
index b440f3eb8..e2ae3d784 100644
--- a/test/mod_http_api_test.exs
+++ b/test/mod_http_api_test.exs
@@ -31,24 +31,24 @@ defmodule ModHttpApiTest do
:ok = :mnesia.start
:stringprep.start
:ok = :ejabberd_config.start(["localhost"], [])
-
:ok = :ejabberd_commands.init
-
:ok = :ejabberd_commands.register_commands(cmds)
- on_exit fn -> unregister_commands(cmds) end
+ on_exit fn ->
+ :meck.unload
+ unregister_commands(cmds) end
end
test "We can expose several commands to API at a time" do
setup_mocks()
- :ejabberd_config.add_local_option(:commands, [[{:add_commands, [:open_cmd, :user_cmd]}]])
- commands = :ejabberd_commands.get_commands()
+ :ejabberd_commands.expose_commands([:open_cmd, :user_cmd])
+ commands = :ejabberd_commands.get_exposed_commands()
assert Enum.member?(commands, :open_cmd)
assert Enum.member?(commands, :user_cmd)
end
test "We can call open commands without authentication" do
setup_mocks()
- :ejabberd_config.add_local_option(:commands, [[{:add_commands, [:open_cmd]}]])
+ :ejabberd_commands.expose_commands([:open_cmd])
request = request(method: :POST, ip: {{127,0,0,1},50000}, data: "[]")
{200, _, _} = :mod_http_api.process(["open_cmd"], request)
end
@@ -56,14 +56,14 @@ defmodule ModHttpApiTest do
# This related to the commands config file option
test "Attempting to access a command that is not exposed as HTTP API returns 403" do
setup_mocks()
- :ejabberd_config.add_local_option(:commands, [])
+ :ejabberd_commands.expose_commands([])
request = request(method: :POST, ip: {{127,0,0,1},50000}, data: "[]")
{403, _, _} = :mod_http_api.process(["open_cmd"], request)
end
test "Call to user, admin or restricted commands without authentication are rejected" do
setup_mocks()
- :ejabberd_config.add_local_option(:commands, [[{:add_commands, [:user_cmd, :admin_cmd, :restricted]}]])
+ :ejabberd_commands.expose_commands([:user_cmd, :admin_cmd, :restricted])
request = request(method: :POST, ip: {{127,0,0,1},50000}, data: "[]")
{403, _, _} = :mod_http_api.process(["user_cmd"], request)
{403, _, _} = :mod_http_api.process(["admin_cmd"], request)
@@ -98,7 +98,7 @@ defmodule ModHttpApiTest do
defp setup_mocks() do
:meck.unload
mock(:gen_mod, :get_module_opt,
- fn (_server, :mod_http_api, admin_ip_access, _, _) ->
+ fn (_server, :mod_http_api, _admin_ip_access, _, _) ->
[{:allow, [{:ip, {{127,0,0,2}, 32}}]}]
end)
end
diff --git a/test/test_helper.exs b/test/test_helper.exs
new file mode 100644
index 000000000..454f2338a
--- /dev/null
+++ b/test/test_helper.exs
@@ -0,0 +1,7 @@
+Code.require_file "ejabberd_auth_mock.exs", __DIR__
+Code.require_file "ejabberd_oauth_mock.exs", __DIR__
+Code.require_file "ejabberd_sm_mock.exs", __DIR__
+Code.require_file "mod_last_mock.exs", __DIR__
+Code.require_file "mod_roster_mock.exs", __DIR__
+
+ExUnit.start