mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-08 21:43:07 +02:00
Fix mod_http_api_test.exs
This commit is contained in:
parent
fc2b7018cc
commit
be0dd51e51
|
@ -39,6 +39,7 @@ defmodule ModHttpApiTest do
|
||||||
end
|
end
|
||||||
|
|
||||||
test "We can expose several commands to API at a time" do
|
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]}]])
|
:ejabberd_config.add_local_option(:commands, [[{:add_commands, [:open_cmd, :user_cmd]}]])
|
||||||
commands = :ejabberd_commands.get_commands()
|
commands = :ejabberd_commands.get_commands()
|
||||||
assert Enum.member?(commands, :open_cmd)
|
assert Enum.member?(commands, :open_cmd)
|
||||||
|
@ -46,21 +47,24 @@ defmodule ModHttpApiTest do
|
||||||
end
|
end
|
||||||
|
|
||||||
test "We can call open commands without authentication" do
|
test "We can call open commands without authentication" do
|
||||||
|
setup_mocks()
|
||||||
:ejabberd_config.add_local_option(:commands, [[{:add_commands, [:open_cmd]}]])
|
:ejabberd_config.add_local_option(:commands, [[{:add_commands, [:open_cmd]}]])
|
||||||
request = request(method: :POST, data: "[]")
|
request = request(method: :POST, ip: {{127,0,0,1},50000}, data: "[]")
|
||||||
{200, _, _} = :mod_http_api.process(["open_cmd"], request)
|
{200, _, _} = :mod_http_api.process(["open_cmd"], request)
|
||||||
end
|
end
|
||||||
|
|
||||||
# This related to the commands config file option
|
# This related to the commands config file option
|
||||||
test "Attempting to access a command that is not exposed as HTTP API returns 401" do
|
test "Attempting to access a command that is not exposed as HTTP API returns 401" do
|
||||||
|
setup_mocks()
|
||||||
:ejabberd_config.add_local_option(:commands, [])
|
:ejabberd_config.add_local_option(:commands, [])
|
||||||
request = request(method: :POST, data: "[]")
|
request = request(method: :POST, ip: {{127,0,0,1},50000}, data: "[]")
|
||||||
{401, _, _} = :mod_http_api.process(["open_cmd"], request)
|
{401, _, _} = :mod_http_api.process(["open_cmd"], request)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "Call to user, admin or restricted commands without authentication are rejected" do
|
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_config.add_local_option(:commands, [[{:add_commands, [:user_cmd, :admin_cmd, :restricted]}]])
|
||||||
request = request(method: :POST, data: "[]")
|
request = request(method: :POST, ip: {{127,0,0,1},50000}, data: "[]")
|
||||||
{401, _, _} = :mod_http_api.process(["user_cmd"], request)
|
{401, _, _} = :mod_http_api.process(["user_cmd"], request)
|
||||||
{401, _, _} = :mod_http_api.process(["admin_cmd"], request)
|
{401, _, _} = :mod_http_api.process(["admin_cmd"], request)
|
||||||
{401, _, _} = :mod_http_api.process(["restricted_cmd"], request)
|
{401, _, _} = :mod_http_api.process(["restricted_cmd"], request)
|
||||||
|
@ -68,6 +72,7 @@ defmodule ModHttpApiTest do
|
||||||
|
|
||||||
@tag pending: true
|
@tag pending: true
|
||||||
test "If admin_ip_access is enabled, we can call restricted API without authentication from that IP" do
|
test "If admin_ip_access is enabled, we can call restricted API without authentication from that IP" do
|
||||||
|
setup_mocks()
|
||||||
end
|
end
|
||||||
|
|
||||||
# Define a set of test commands that we expose through API
|
# Define a set of test commands that we expose through API
|
||||||
|
@ -86,10 +91,27 @@ defmodule ModHttpApiTest do
|
||||||
end
|
end
|
||||||
|
|
||||||
def open_cmd, do: :ok
|
def open_cmd, do: :ok
|
||||||
def user_cmd, do: :ok
|
def user_cmd(_, _), do: :ok
|
||||||
def admin_cmd, do: :ok
|
def admin_cmd, do: :ok
|
||||||
def restricted_cmd, do: :ok
|
def restricted_cmd, do: :ok
|
||||||
|
|
||||||
|
defp setup_mocks() do
|
||||||
|
:meck.unload
|
||||||
|
mock(:gen_mod, :get_module_opt,
|
||||||
|
fn (_server, :mod_http_api, admin_ip_access, _, _) ->
|
||||||
|
[{:allow, [{:ip, {{127,0,0,2}, 32}}]}]
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp mock(module, function, fun) do
|
||||||
|
try do
|
||||||
|
:meck.new(module)
|
||||||
|
catch
|
||||||
|
:error, {:already_started, _pid} -> :ok
|
||||||
|
end
|
||||||
|
:meck.expect(module, function, fun)
|
||||||
|
end
|
||||||
|
|
||||||
defp unregister_commands(commands) do
|
defp unregister_commands(commands) do
|
||||||
try do
|
try do
|
||||||
:ejabberd_commands.unregister_commands(commands)
|
:ejabberd_commands.unregister_commands(commands)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user