TestServer.HTTPServer behaviour (TestServer v0.1.19)

View Source

HTTP server adapter module.

Usage

defmodule MyApp.MyHTTPServer do
  @behaviour TestServer.HTTPServer

  @impl TestServer.HTTPServer
  def start(instance, port, scheme, tls_options, server_options) do
    my_http_server_options =
      server_options
      |> Keyword.put(:port, port)
      |> Keyword.put_new(:ipfamily, options[:ipfamily])

    case MyHTTPServer.start(my_http_server_options) do
      {:ok, pid} -> {:ok, pid, my_http_server_options}
      {:error, error} -> {:error, error}
    end
  end

  @impl TestServer.HTTPServer
  def stop(instance, server_options), do: MyHTTPServer.stop()

  @impl TestServer.HTTPServer
  def get_socket_pid(conn), do: conn.owner
end

Summary

Types

instance()

@type instance() :: pid()

options()

@type options() :: [tls: keyword(), ipfamily: :inet | :inet6]

port_number()

@type port_number() :: :inet.port_number()

scheme()

@type scheme() :: :http | :https

server_options()

@type server_options() :: keyword()

Callbacks

get_socket_pid(t)

@callback get_socket_pid(Plug.Conn.t()) :: pid()

start(instance, port_number, scheme, options, server_options)

@callback start(instance(), port_number(), scheme(), options(), server_options()) ::
  {:ok, pid(), server_options()} | {:error, any()}

stop(instance, server_options)

@callback stop(instance(), server_options()) :: :ok | {:error, any()}