Current section

Files

Jump to
phoenix priv templates phx.gen.auth context_fixtures_functions.ex
Raw

priv/templates/phx.gen.auth/context_fixtures_functions.ex

import Ecto.Query
alias <%= inspect context.module %>
alias <%= inspect scope_config.scope.module %>
def unique_<%= schema.singular %>_email, do: "<%= schema.singular %>#{System.unique_integer()}@example.com"
def valid_<%= schema.singular %>_password, do: "hello world!"
def valid_<%= schema.singular %>_attributes(attrs \\ %{}) do
Enum.into(attrs, %{
email: unique_<%= schema.singular %>_email()
})
end
def unconfirmed_<%= schema.singular %>_fixture(attrs \\ %{}) do
{:ok, <%= schema.singular %>} =
attrs
|> valid_<%= schema.singular %>_attributes()
|> <%= inspect context.alias %>.register_<%= schema.singular %>()
<%= schema.singular %>
end
def <%= schema.singular %>_fixture(attrs \\ %{}) do
<%= schema.singular %> = unconfirmed_<%= schema.singular %>_fixture(attrs)
token =
extract_<%= schema.singular %>_token(fn url ->
<%= inspect context.alias %>.deliver_login_instructions(<%= schema.singular %>, url)
end)
{:ok, {<%= schema.singular %>, _expired_tokens}} =
<%= inspect context.alias %>.login_<%= schema.singular %>_by_magic_link(token)
<%= schema.singular %>
end
def <%= schema.singular %>_scope_fixture do
<%= schema.singular %> = <%= schema.singular %>_fixture()
<%= schema.singular %>_scope_fixture(<%= schema.singular %>)
end
def <%= schema.singular %>_scope_fixture(<%= schema.singular %>) do
<%= inspect scope_config.scope.alias %>.for_<%= schema.singular %>(<%= schema.singular %>)
end
def set_password(<%= schema.singular %>) do
{:ok, {<%= schema.singular %>, _expired_tokens}} =
<%= inspect context.alias %>.update_<%= schema.singular %>_password(<%= schema.singular %>, %{password: valid_<%= schema.singular %>_password()})
<%= schema.singular %>
end
def extract_<%= schema.singular %>_token(fun) do
{:ok, captured_email} = fun.(&"[TOKEN]#{&1}[TOKEN]")
[_, token | _] = String.split(captured_email.text_body, "[TOKEN]")
token
end
def override_token_authenticated_at(token, authenticated_at) when is_binary(token) do
<%= inspect schema.repo %>.update_all(
from(t in <%= inspect context.alias %>.<%= inspect schema.alias %>Token,
where: t.token == ^token
),
set: [authenticated_at: authenticated_at]
)
end
def generate_<%= schema.singular %>_magic_link_token(<%= schema.singular %>) do
{encoded_token, <%= schema.singular %>_token} = <%= inspect context.alias %>.<%= inspect schema.alias %>Token.build_email_token(<%= schema.singular %>, "login")
<%= inspect schema.repo %>.insert!(<%= schema.singular %>_token)
{encoded_token, <%= schema.singular %>_token.token}
end
def offset_<%= schema.singular %>_token(token, amount_to_add, unit) do
dt = <%= inspect datetime_module %>.add(<%= datetime_now %>, amount_to_add, unit)
<%= inspect schema.repo %>.update_all(
from(ut in <%= inspect context.alias %>.<%= inspect schema.alias %>Token, where: ut.token == ^token),
set: [inserted_at: dt, authenticated_at: dt]
)
end