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






















