diff options
Diffstat (limited to 'test/support')
-rw-r--r-- | test/support/builders/activity_builder.ex | 1 | ||||
-rw-r--r-- | test/support/captcha_mock.ex | 13 | ||||
-rw-r--r-- | test/support/conn_case.ex | 1 | ||||
-rw-r--r-- | test/support/data_case.ex | 18 | ||||
-rw-r--r-- | test/support/helpers.ex | 25 | ||||
-rw-r--r-- | test/support/http_request_mock.ex | 2 | ||||
-rw-r--r-- | test/support/websocket_client.ex | 58 | ||||
-rw-r--r-- | test/support/websub_mock.ex | 5 |
8 files changed, 121 insertions, 2 deletions
diff --git a/test/support/builders/activity_builder.ex b/test/support/builders/activity_builder.ex index eb72d5ba9..6e5a8e059 100644 --- a/test/support/builders/activity_builder.ex +++ b/test/support/builders/activity_builder.ex @@ -1,5 +1,4 @@ defmodule Pleroma.Builders.ActivityBuilder do - alias Pleroma.Builders.UserBuilder alias Pleroma.Web.ActivityPub.ActivityPub def build(data \\ %{}, opts \\ %{}) do diff --git a/test/support/captcha_mock.ex b/test/support/captcha_mock.ex new file mode 100644 index 000000000..898aa17b8 --- /dev/null +++ b/test/support/captcha_mock.ex @@ -0,0 +1,13 @@ +defmodule Pleroma.Captcha.Mock do + alias Pleroma.Captcha.Service + @behaviour Service + + @impl Service + def new(), do: %{type: :mock} + + @impl Service + def validate(_token, _captcha), do: true + + @impl Service + def cleanup(), do: :ok +end diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index 2e6707087..d25c28f49 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -19,6 +19,7 @@ defmodule Pleroma.Web.ConnCase do quote do # Import conveniences for testing with connections use Phoenix.ConnTest + use Pleroma.Tests.Helpers import Pleroma.Web.Router.Helpers # The default endpoint for testing diff --git a/test/support/data_case.ex b/test/support/data_case.ex index 8eff0fd94..53e7234d2 100644 --- a/test/support/data_case.ex +++ b/test/support/data_case.ex @@ -22,6 +22,7 @@ defmodule Pleroma.DataCase do import Ecto.Changeset import Ecto.Query import Pleroma.DataCase + use Pleroma.Tests.Helpers end end @@ -36,6 +37,23 @@ defmodule Pleroma.DataCase do :ok end + def ensure_local_uploader(_context) do + uploader = Pleroma.Config.get([Pleroma.Upload, :uploader]) + filters = Pleroma.Config.get([Pleroma.Upload, :filters]) + + unless uploader == Pleroma.Uploaders.Local || filters != [] do + Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local) + Pleroma.Config.put([Pleroma.Upload, :filters], []) + + on_exit(fn -> + Pleroma.Config.put([Pleroma.Upload, :uploader], uploader) + Pleroma.Config.put([Pleroma.Upload, :filters], filters) + end) + end + + :ok + end + @doc """ A helper that transform changeset errors to a map of messages. diff --git a/test/support/helpers.ex b/test/support/helpers.ex new file mode 100644 index 000000000..64b6b1900 --- /dev/null +++ b/test/support/helpers.ex @@ -0,0 +1,25 @@ +defmodule Pleroma.Tests.Helpers do + @moduledoc """ + Helpers for use in tests. + """ + + defmacro __using__(_opts) do + quote do + def refresh_record(%{id: id, __struct__: model} = _), + do: refresh_record(model, %{id: id}) + + def refresh_record(model, %{id: id} = _) do + Pleroma.Repo.get_by(model, id: id) + end + + # Used for comparing json rendering during tests. + def render_json(view, template, assigns) do + assigns = Map.new(assigns) + + view.render(template, assigns) + |> Poison.encode!() + |> Poison.decode!() + end + end + end +end diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 391342ad7..6f98fc5d0 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -13,7 +13,7 @@ defmodule HttpRequestMock do with {:ok, res} <- apply(__MODULE__, method, [url, query, body, headers]) do res else - {_, r} = error -> + {_, _r} = error -> # Logger.warn(r) error end diff --git a/test/support/websocket_client.ex b/test/support/websocket_client.ex new file mode 100644 index 000000000..57e9bb17f --- /dev/null +++ b/test/support/websocket_client.ex @@ -0,0 +1,58 @@ +defmodule Pleroma.Integration.WebsocketClient do + # https://github.com/phoenixframework/phoenix/blob/master/test/support/websocket_client.exs + + @doc """ + Starts the WebSocket server for given ws URL. Received Socket.Message's + are forwarded to the sender pid + """ + def start_link(sender, url, headers \\ []) do + :crypto.start() + :ssl.start() + + :websocket_client.start_link( + String.to_charlist(url), + __MODULE__, + [sender], + extra_headers: headers + ) + end + + @doc """ + Closes the socket + """ + def close(socket) do + send(socket, :close) + end + + @doc """ + Sends a low-level text message to the client. + """ + def send_text(server_pid, msg) do + send(server_pid, {:text, msg}) + end + + @doc false + def init([sender], _conn_state) do + {:ok, %{sender: sender}} + end + + @doc false + def websocket_handle(frame, _conn_state, state) do + send(state.sender, frame) + {:ok, state} + end + + @doc false + def websocket_info({:text, msg}, _conn_state, state) do + {:reply, {:text, msg}, state} + end + + def websocket_info(:close, _conn_state, _state) do + {:close, <<>>, "done"} + end + + @doc false + def websocket_terminate(_reason, _conn_state, _state) do + :ok + end +end diff --git a/test/support/websub_mock.ex b/test/support/websub_mock.ex new file mode 100644 index 000000000..0cba0b740 --- /dev/null +++ b/test/support/websub_mock.ex @@ -0,0 +1,5 @@ +defmodule Pleroma.Web.WebsubMock do + def verify(sub) do + {:ok, sub} + end +end |