I am testing a user auth module that is based of UserAuth
module from mix phx.gen.auth
command but encountered this cannot fetch key "_format" from conn.params because they were not fetched. Configure and invoke Plug.Parsers to set params based on the request
.
Does conn
in setup
block not uses the same config from AppWeb.Endpoint
where Plug.Parsers
has been configured?
Here’s my test.
defmodule MonoWeb.UserAuthTest do
use MonoWeb.ConnCase, async: true
alias Mono.Accounts
alias MonoWeb.UserAuth
import Mono.AccountsFixtures
@user_session "_mono_user_session"
setup %{conn: conn} do
conn =
conn
|> Map.replace!(:secret_key_base, MonoWeb.Endpoint.config(:secret_key_base))
|> init_test_session(%{})
%{user: user_fixture(), conn: conn}
end
describe "log_in_user/3" do
test "stores the user token in the session", %{conn: conn, user: user} do
conn = UserAuth.log_in_user(conn, user)
assert token = get_session(conn, :user_token)
assert Accounts.get_user_by_session_token(token)
end
test "clears everything previously stored in the session", %{conn: conn, user: user} do
conn = conn |> put_session(:to_be_removed, "value") |> UserAuth.log_in_user(user)
refute get_session(conn, :to_be_removed)
end
test "persists user session in a cookie", %{conn: conn, user: user} do
conn = conn |> fetch_cookies() |> UserAuth.log_in_user(user)
assert get_session(conn, :user_token) == conn.cookies[@user_session]
assert %{value: signed_token, max_age: max_age} = conn.resp_cookies[@user_session]
assert signed_token != get_session(conn, :user_token)
assert max_age == 5_184_000
end
end
end