diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/pleroma/integration/mastodon_websocket_test.exs | 18 | ||||
| -rw-r--r-- | test/support/websocket_client.ex | 28 | 
2 files changed, 24 insertions, 22 deletions
diff --git a/test/pleroma/integration/mastodon_websocket_test.exs b/test/pleroma/integration/mastodon_websocket_test.exs index 2d4c7f63b..0226b2a5d 100644 --- a/test/pleroma/integration/mastodon_websocket_test.exs +++ b/test/pleroma/integration/mastodon_websocket_test.exs @@ -33,16 +33,18 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do    test "refuses invalid requests" do      capture_log(fn -> -      assert {:error, {404, _}} = start_socket() -      assert {:error, {404, _}} = start_socket("?stream=ncjdk") +      assert {:error, %WebSockex.RequestError{code: 404}} = start_socket() +      assert {:error, %WebSockex.RequestError{code: 404}} = start_socket("?stream=ncjdk")        Process.sleep(30)      end)    end    test "requires authentication and a valid token for protected streams" do      capture_log(fn -> -      assert {:error, {401, _}} = start_socket("?stream=user&access_token=aaaaaaaaaaaa") -      assert {:error, {401, _}} = start_socket("?stream=user") +      assert {:error, %WebSockex.RequestError{code: 401}} = +               start_socket("?stream=user&access_token=aaaaaaaaaaaa") + +      assert {:error, %WebSockex.RequestError{code: 401}} = start_socket("?stream=user")        Process.sleep(30)      end)    end @@ -102,7 +104,7 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do        assert {:ok, _} = start_socket("?stream=user&access_token=#{token.token}")        capture_log(fn -> -        assert {:error, {401, _}} = start_socket("?stream=user") +        assert {:error, %WebSockex.RequestError{code: 401}} = start_socket("?stream=user")          Process.sleep(30)        end)      end @@ -111,7 +113,9 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do        assert {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}")        capture_log(fn -> -        assert {:error, {401, _}} = start_socket("?stream=user:notification") +        assert {:error, %WebSockex.RequestError{code: 401}} = +                 start_socket("?stream=user:notification") +          Process.sleep(30)        end)      end @@ -120,7 +124,7 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do        assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}])        capture_log(fn -> -        assert {:error, {401, _}} = +        assert {:error, %WebSockex.RequestError{code: 401}} =                   start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}])          Process.sleep(30) diff --git a/test/support/websocket_client.ex b/test/support/websocket_client.ex index d149b324e..cf2972c38 100644 --- a/test/support/websocket_client.ex +++ b/test/support/websocket_client.ex @@ -5,18 +5,17 @@  defmodule Pleroma.Integration.WebsocketClient do    # https://github.com/phoenixframework/phoenix/blob/master/test/support/websocket_client.exs +  use WebSockex +    @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), +    WebSockex.start_link( +      url,        __MODULE__, -      [sender], +      %{sender: sender},        extra_headers: headers      )    end @@ -36,27 +35,26 @@ defmodule Pleroma.Integration.WebsocketClient do    end    @doc false -  def init([sender], _conn_state) do -    {:ok, %{sender: sender}} -  end - -  @doc false -  def websocket_handle(frame, _conn_state, state) do +  @impl true +  def handle_frame(frame, state) do      send(state.sender, frame)      {:ok, state}    end    @doc false -  def websocket_info({:text, msg}, _conn_state, state) do +  @impl true +  def handle_info({:text, msg}, state) do      {:reply, {:text, msg}, state}    end -  def websocket_info(:close, _conn_state, _state) do +  @impl true +  def handle_info(:close, _state) do      {:close, <<>>, "done"}    end    @doc false -  def websocket_terminate(_reason, _conn_state, _state) do +  @impl true +  def terminate(_reason, _state) do      :ok    end  end  | 
