Conveniences for testing plugs.
This module can be used in your test cases, like this:
use ExUnit.Case, async: true use Plug.Test
Using this module will:
Plug.Conn
moduleBy default, Plug tests checks for invalid header keys, e.g. header keys which include uppercase letters, and raises a Plug.Conn.InvalidHeaderError
when it finds one. To disable it, set :validate_header_keys_during_test to false on the app config.
config :plug, :validate_header_keys_during_test, false
Creates a test connection.
Deletes a request cookie.
Initializes the session with the given contents.
Puts the http protocol.
Puts the peer data.
Puts a request cookie.
Moves cookies from a connection into a new connection for subsequent requests.
Return the informational requests that have been sent.
Return the assets that have been pushed.
Returns the sent response.
conn(String.Chars.t(), binary(), params()) :: Plug.Conn.t()
Creates a test connection.
The request method
and path
are required arguments. method
may be any value that implements to_string/1
and it will properly converted and normalized (e.g., :get
or "post"
).
The path
is commonly the request path with optional query string but it may also be a complete URI. When a URI is given, the host and schema will be used as part of the request too.
The params_or_body
field must be one of:
nil
- meaning there is no body;:headers
must be given as option with a content-type;conn(:get, "/foo?bar=10") conn(:get, "/foo", %{bar: 10}) conn(:post, "/") conn("patch", "/", "") |> put_req_header("content-type", "application/json")
delete_req_cookie(Plug.Conn.t(), binary()) :: Plug.Conn.t()
Deletes a request cookie.
init_test_session(Plug.Conn.t(), %{optional(String.t() | atom()) => any()}) :: Plug.Conn.t()
Initializes the session with the given contents.
If the session has already been initialized, the new contents will be merged with the previous ones.
Puts the http protocol.
Puts the peer data.
put_req_cookie(Plug.Conn.t(), binary(), binary()) :: Plug.Conn.t()
Puts a request cookie.
recycle_cookies(Plug.Conn.t(), Plug.Conn.t()) :: Plug.Conn.t()
Moves cookies from a connection into a new connection for subsequent requests.
This function copies the cookie information in old_conn
into new_conn
, emulating multiple requests done by clients where cookies are always passed forward, and returns the new version of new_conn
.
Return the informational requests that have been sent.
This function depends on gathering the messages sent by the test adapter when informational messages, such as an early hint, are sent. Calling this function will clear the informational request messages from the inbox for the process. To assert on multiple informs, the result of the function should be stored in a variable.
conn = conn(:get, "/foo", "bar=10") informs = Plug.Test.sent_informs(conn) assert {"/static/application.css", [{"accept", "text/css"}]} in informs assert {"/static/application.js", [{"accept", "application/javascript"}]} in informs
Return the assets that have been pushed.
This function depends on gathering the messages sent by the test adapter when assets are pushed. Calling this function will clear the pushed message from the inbox for the process. To assert on multiple pushes, the result of the function should be stored in a variable.
conn = conn(:get, "/foo?bar=10") pushes = Plug.Test.sent_pushes(conn) assert {"/static/application.css", [{"accept", "text/css"}]} in pushes assert {"/static/application.js", [{"accept", "application/javascript"}]} in pushes
Returns the sent response.
This function is useful when the code being invoked crashes and there is a need to verify a particular response was sent even with the crash. It returns a tuple with {status, headers, body}
.
© 2013 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/plug/Plug.Test.html