diff options
| author | lambda <pleromagit@rogerbraun.net> | 2018-12-17 19:30:05 +0000 | 
|---|---|---|
| committer | lambda <pleromagit@rogerbraun.net> | 2018-12-17 19:30:05 +0000 | 
| commit | 078b8b6d228bee28697fda4bbefe65736f8b0d3c (patch) | |
| tree | 5ab5ffc319a32beaa954af9f6f216642651c444d /test/support | |
| parent | 567359790ea623949585629c41580961c59a01ff (diff) | |
| parent | ba9ef77b6ae7fd6ade9eb87a418f9c87c7d94647 (diff) | |
| download | pleroma-078b8b6d228bee28697fda4bbefe65736f8b0d3c.tar.gz pleroma-078b8b6d228bee28697fda4bbefe65736f8b0d3c.zip | |
Merge branch 'phoenix14' into 'develop'
Upgrade to Phoenix 1.4
Closes #451
See merge request pleroma/pleroma!560
Diffstat (limited to 'test/support')
| -rw-r--r-- | test/support/websocket_client.ex | 58 | 
1 files changed, 58 insertions, 0 deletions
| 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 | 
