Compare commits
No commits in common. "c1a0b4017fd587cdb99e756c770b9de09bd19481" and "50be85a1c3f2faf847fdd0568c93f4f01c325dc9" have entirely different histories.
c1a0b4017f
...
50be85a1c3
@ -1,6 +1,3 @@
|
|||||||
# v0.1.12
|
|
||||||
- ee cummings even more
|
|
||||||
- Improve tests
|
|
||||||
# v0.1.11
|
# v0.1.11
|
||||||
- Update dependencies
|
- Update dependencies
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ defmodule MemexWeb.CoreComponents do
|
|||||||
"""
|
"""
|
||||||
use Phoenix.Component
|
use Phoenix.Component
|
||||||
use MemexWeb, :verified_routes
|
use MemexWeb, :verified_routes
|
||||||
|
|
||||||
import MemexWeb.{Gettext, HTMLHelpers}
|
import MemexWeb.{Gettext, HTMLHelpers}
|
||||||
alias Memex.{Accounts, Accounts.Invite, Accounts.User}
|
alias Memex.{Accounts, Accounts.Invite, Accounts.User}
|
||||||
alias Memex.Contexts.Context
|
alias Memex.Contexts.Context
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
|
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
|
||||||
<h1 class="title text-primary-400 text-xl">
|
<h1 class="title text-primary-400 text-xl">
|
||||||
<%= dgettext("actions", "reset password") %>
|
<%= dgettext("actions", "Reset password") %>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<.form
|
<.form
|
||||||
@ -26,7 +26,7 @@
|
|||||||
) %>
|
) %>
|
||||||
<%= error_tag(f, :password_confirmation, "col-span-3") %>
|
<%= error_tag(f, :password_confirmation, "col-span-3") %>
|
||||||
|
|
||||||
<%= submit(dgettext("actions", "reset password"),
|
<%= submit(dgettext("actions", "Reset password"),
|
||||||
class: "mx-auto btn btn-primary col-span-3"
|
class: "mx-auto btn btn-primary col-span-3"
|
||||||
) %>
|
) %>
|
||||||
</.form>
|
</.form>
|
||||||
|
2
mix.exs
2
mix.exs
@ -4,7 +4,7 @@ defmodule Memex.MixProject do
|
|||||||
def project do
|
def project do
|
||||||
[
|
[
|
||||||
app: :memex,
|
app: :memex,
|
||||||
version: "0.1.12",
|
version: "0.1.11",
|
||||||
elixir: "1.14.4",
|
elixir: "1.14.4",
|
||||||
elixirc_paths: elixirc_paths(Mix.env()),
|
elixirc_paths: elixirc_paths(Mix.env()),
|
||||||
start_permanent: Mix.env() == :prod,
|
start_permanent: Mix.env() == :prod,
|
||||||
|
@ -16,6 +16,12 @@ msgstr ""
|
|||||||
msgid "Resend confirmation instructions"
|
msgid "Resend confirmation instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
|
||||||
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Reset password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
|
||||||
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@ -211,9 +217,3 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "move %{step_title} up"
|
msgid "move %{step_title} up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "reset password"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -16,6 +16,12 @@ msgstr ""
|
|||||||
msgid "Resend confirmation instructions"
|
msgid "Resend confirmation instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
|
||||||
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Reset password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
|
||||||
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@ -211,9 +217,3 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "move %{step_title} up"
|
msgid "move %{step_title} up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "reset password"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -17,6 +17,12 @@ msgstr ""
|
|||||||
msgid "Resend confirmation instructions"
|
msgid "Resend confirmation instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
|
||||||
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Reset password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
|
||||||
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@ -212,9 +218,3 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "move %{step_title} up"
|
msgid "move %{step_title} up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "reset password"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -26,8 +26,8 @@ defmodule MemexWeb.UserConfirmationControllerTest do
|
|||||||
conn = post(conn, ~p"/users/confirm", %{user: %{email: user.email}})
|
conn = post(conn, ~p"/users/confirm", %{user: %{email: user.email}})
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
|
|
||||||
assert conn.assigns.flash["info"] =~
|
conn.assigns.flash["info"] =~
|
||||||
"if your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
|
"If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
|
||||||
|
|
||||||
assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context == "confirm"
|
assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context == "confirm"
|
||||||
end
|
end
|
||||||
@ -38,16 +38,16 @@ defmodule MemexWeb.UserConfirmationControllerTest do
|
|||||||
conn = post(conn, ~p"/users/confirm", %{user: %{email: user.email}})
|
conn = post(conn, ~p"/users/confirm", %{user: %{email: user.email}})
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
|
|
||||||
assert conn.assigns.flash["info"] =~
|
conn.assigns.flash["info"] =~
|
||||||
"if your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
|
"If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
|
||||||
end
|
end
|
||||||
|
|
||||||
test "does not send confirmation token if email is invalid", %{conn: conn} do
|
test "does not send confirmation token if email is invalid", %{conn: conn} do
|
||||||
conn = post(conn, ~p"/users/confirm", %{user: %{email: "unknown@example.com"}})
|
conn = post(conn, ~p"/users/confirm", %{user: %{email: "unknown@example.com"}})
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
|
|
||||||
assert conn.assigns.flash["info"] =~
|
conn.assigns.flash["info"] =~
|
||||||
"if your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
|
"If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
|
||||||
|
|
||||||
assert Repo.all(Accounts.UserToken) == []
|
assert Repo.all(Accounts.UserToken) == []
|
||||||
end
|
end
|
||||||
@ -62,7 +62,9 @@ defmodule MemexWeb.UserConfirmationControllerTest do
|
|||||||
|
|
||||||
conn = get(conn, ~p"/users/confirm/#{token}")
|
conn = get(conn, ~p"/users/confirm/#{token}")
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
assert conn.assigns.flash["info"] =~ "#{user.email} confirmed successfully"
|
|
||||||
|
conn.assigns.flash["info"] =~ "#{user.email} confirmed successfully"
|
||||||
|
|
||||||
assert Accounts.get_user!(user.id).confirmed_at
|
assert Accounts.get_user!(user.id).confirmed_at
|
||||||
refute get_session(conn, :user_token)
|
refute get_session(conn, :user_token)
|
||||||
assert Repo.all(Accounts.UserToken) == []
|
assert Repo.all(Accounts.UserToken) == []
|
||||||
@ -70,7 +72,7 @@ defmodule MemexWeb.UserConfirmationControllerTest do
|
|||||||
# When not logged in
|
# When not logged in
|
||||||
conn = get(conn, ~p"/users/confirm/#{token}")
|
conn = get(conn, ~p"/users/confirm/#{token}")
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
assert conn.assigns.flash["error"] =~ "user confirmation link is invalid or it has expired"
|
conn.assigns.flash["error"] =~ "User confirmation link is invalid or it has expired"
|
||||||
|
|
||||||
# When logged in
|
# When logged in
|
||||||
conn =
|
conn =
|
||||||
@ -83,9 +85,10 @@ defmodule MemexWeb.UserConfirmationControllerTest do
|
|||||||
end
|
end
|
||||||
|
|
||||||
test "does not confirm email with invalid token", %{conn: conn, user: user} do
|
test "does not confirm email with invalid token", %{conn: conn, user: user} do
|
||||||
conn = get(conn, ~p"/users/confirm/oops")
|
conn = get(conn, ~p"/users/confirm/#{"oops"}")
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
assert conn.assigns.flash["error"] =~ "user confirmation link is invalid or it has expired"
|
conn.assigns.flash["error"] =~ "User confirmation link is invalid or it has expired"
|
||||||
|
|
||||||
refute Accounts.get_user!(user.id).confirmed_at
|
refute Accounts.get_user!(user.id).confirmed_at
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -32,12 +32,6 @@ defmodule MemexWeb.UserRegistrationControllerTest do
|
|||||||
}
|
}
|
||||||
|
|
||||||
assert redirected_to(conn) =~ ~p"/"
|
assert redirected_to(conn) =~ ~p"/"
|
||||||
|
|
||||||
# Now do a logged in request and assert on the menu
|
|
||||||
conn = get(conn, ~p"/")
|
|
||||||
response = html_response(conn, 200)
|
|
||||||
# user's email is recorded as admin
|
|
||||||
assert response =~ email
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "render errors for invalid data", %{conn: conn} do
|
test "render errors for invalid data", %{conn: conn} do
|
||||||
|
@ -26,8 +26,8 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
|
|||||||
conn = post(conn, ~p"/users/reset_password", %{user: %{email: user.email}})
|
conn = post(conn, ~p"/users/reset_password", %{user: %{email: user.email}})
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
|
|
||||||
assert conn.assigns.flash["info"] =~
|
conn.assigns.flash["info"] =~
|
||||||
"if your email is in our system, you will receive instructions to reset your password shortly."
|
"If your email is in our system, you will receive instructions to reset your password shortly."
|
||||||
|
|
||||||
assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context == "reset_password"
|
assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context == "reset_password"
|
||||||
end
|
end
|
||||||
@ -36,8 +36,8 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
|
|||||||
conn = post(conn, ~p"/users/reset_password", %{user: %{email: "unknown@example.com"}})
|
conn = post(conn, ~p"/users/reset_password", %{user: %{email: "unknown@example.com"}})
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
|
|
||||||
assert conn.assigns.flash["info"] =~
|
conn.assigns.flash["info"] =~
|
||||||
"if your email is in our system, you will receive instructions to reset your password shortly."
|
"If your email is in our system, you will receive instructions to reset your password shortly."
|
||||||
|
|
||||||
assert Repo.all(Accounts.UserToken) == []
|
assert Repo.all(Accounts.UserToken) == []
|
||||||
end
|
end
|
||||||
@ -55,13 +55,13 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
|
|||||||
|
|
||||||
test "renders reset password", %{conn: conn, token: token} do
|
test "renders reset password", %{conn: conn, token: token} do
|
||||||
conn = get(conn, ~p"/users/reset_password/#{token}")
|
conn = get(conn, ~p"/users/reset_password/#{token}")
|
||||||
assert html_response(conn, 200) =~ "reset password"
|
assert html_response(conn, 200) =~ "Reset password"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "does not render reset password with invalid token", %{conn: conn} do
|
test "does not render reset password with invalid token", %{conn: conn} do
|
||||||
conn = get(conn, ~p"/users/reset_password/oops")
|
conn = get(conn, ~p"/users/reset_password/#{"oops"}")
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
assert conn.assigns.flash["error"] =~ "reset password link is invalid or it has expired"
|
conn.assigns.flash["error"] =~ "Reset password link is invalid or it has expired"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
|
|||||||
|
|
||||||
assert redirected_to(conn) == ~p"/users/log_in"
|
assert redirected_to(conn) == ~p"/users/log_in"
|
||||||
refute get_session(conn, :user_token)
|
refute get_session(conn, :user_token)
|
||||||
assert conn.assigns.flash["info"] =~ "password reset successfully"
|
conn.assigns.flash["info"] =~ "Password reset successfully"
|
||||||
assert Accounts.get_user_by_email_and_password(user.email, "new valid password")
|
assert Accounts.get_user_by_email_and_password(user.email, "new valid password")
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -100,15 +100,15 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
|
|||||||
})
|
})
|
||||||
|
|
||||||
response = html_response(conn, 200)
|
response = html_response(conn, 200)
|
||||||
assert response =~ "reset password"
|
assert response =~ "Reset password"
|
||||||
assert response =~ "should be at least 12 character(s)"
|
assert response =~ "should be at least 12 character(s)"
|
||||||
assert response =~ "does not match password"
|
assert response =~ "does not match password"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "does not reset password with invalid token", %{conn: conn} do
|
test "does not reset password with invalid token", %{conn: conn} do
|
||||||
conn = put(conn, ~p"/users/reset_password/oops")
|
conn = put(conn, ~p"/users/reset_password/#{"oops"}")
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
assert conn.assigns.flash["error"] =~ "reset password link is invalid or it has expired"
|
conn.assigns.flash["error"] =~ "Reset password link is invalid or it has expired"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -83,14 +83,14 @@ defmodule MemexWeb.UserSessionControllerTest do
|
|||||||
conn = conn |> log_in_user(current_user) |> delete(~p"/users/log_out")
|
conn = conn |> log_in_user(current_user) |> delete(~p"/users/log_out")
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
refute get_session(conn, :user_token)
|
refute get_session(conn, :user_token)
|
||||||
assert conn.assigns.flash["info"] =~ "logged out successfully"
|
conn.assigns.flash["info"] =~ "logged out successfully"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "succeeds even if the user is not logged in", %{conn: conn} do
|
test "succeeds even if the user is not logged in", %{conn: conn} do
|
||||||
conn = delete(conn, ~p"/users/log_out")
|
conn = delete(conn, ~p"/users/log_out")
|
||||||
assert redirected_to(conn) == ~p"/"
|
assert redirected_to(conn) == ~p"/"
|
||||||
refute get_session(conn, :user_token)
|
refute get_session(conn, :user_token)
|
||||||
assert conn.assigns.flash["info"] =~ "logged out successfully"
|
conn.assigns.flash["info"] =~ "logged out successfully"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -39,7 +39,8 @@ defmodule MemexWeb.UserSettingsControllerTest do
|
|||||||
|
|
||||||
assert redirected_to(new_password_conn) == ~p"/users/settings"
|
assert redirected_to(new_password_conn) == ~p"/users/settings"
|
||||||
assert get_session(new_password_conn, :user_token) != get_session(conn, :user_token)
|
assert get_session(new_password_conn, :user_token) != get_session(conn, :user_token)
|
||||||
assert new_password_conn.assigns.flash["info"] =~ "password updated successfully"
|
new_password_conn.assigns.flash["info"] =~ "password updated successfully"
|
||||||
|
|
||||||
assert Accounts.get_user_by_email_and_password(current_user.email, "new valid password")
|
assert Accounts.get_user_by_email_and_password(current_user.email, "new valid password")
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -59,6 +60,7 @@ defmodule MemexWeb.UserSettingsControllerTest do
|
|||||||
assert response =~ "should be at least 12 character(s)"
|
assert response =~ "should be at least 12 character(s)"
|
||||||
assert response =~ "does not match password"
|
assert response =~ "does not match password"
|
||||||
assert response =~ "is not valid"
|
assert response =~ "is not valid"
|
||||||
|
|
||||||
assert get_session(old_password_conn, :user_token) == get_session(conn, :user_token)
|
assert get_session(old_password_conn, :user_token) == get_session(conn, :user_token)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -70,13 +72,13 @@ defmodule MemexWeb.UserSettingsControllerTest do
|
|||||||
put(conn, ~p"/users/settings", %{
|
put(conn, ~p"/users/settings", %{
|
||||||
action: "update_email",
|
action: "update_email",
|
||||||
current_password: valid_user_password(),
|
current_password: valid_user_password(),
|
||||||
user: %{email: unique_user_email()}
|
user: %{"email" => unique_user_email()}
|
||||||
})
|
})
|
||||||
|
|
||||||
assert redirected_to(conn) == ~p"/users/settings"
|
assert redirected_to(conn) == ~p"/users/settings"
|
||||||
|
|
||||||
assert conn.assigns.flash["info"] =~
|
conn.assigns.flash["info"] =~
|
||||||
"a link to confirm your email change has been sent to the new address."
|
"a link to confirm your email change has been sent to the new address."
|
||||||
|
|
||||||
assert Accounts.get_user_by_email(current_user.email)
|
assert Accounts.get_user_by_email(current_user.email)
|
||||||
end
|
end
|
||||||
@ -84,9 +86,9 @@ defmodule MemexWeb.UserSettingsControllerTest do
|
|||||||
test "does not update email on invalid data", %{conn: conn} do
|
test "does not update email on invalid data", %{conn: conn} do
|
||||||
conn =
|
conn =
|
||||||
put(conn, ~p"/users/settings", %{
|
put(conn, ~p"/users/settings", %{
|
||||||
action: "update_email",
|
"action" => "update_email",
|
||||||
current_password: "invalid",
|
"current_password" => "invalid",
|
||||||
user: %{email: "with spaces"}
|
"user" => %{"email" => "with spaces"}
|
||||||
})
|
})
|
||||||
|
|
||||||
response = html_response(conn, 200)
|
response = html_response(conn, 200)
|
||||||
@ -116,19 +118,19 @@ defmodule MemexWeb.UserSettingsControllerTest do
|
|||||||
%{conn: conn, current_user: current_user, token: token, email: email} do
|
%{conn: conn, current_user: current_user, token: token, email: email} do
|
||||||
conn = get(conn, ~p"/users/settings/confirm_email/#{token}")
|
conn = get(conn, ~p"/users/settings/confirm_email/#{token}")
|
||||||
assert redirected_to(conn) == ~p"/users/settings"
|
assert redirected_to(conn) == ~p"/users/settings"
|
||||||
assert conn.assigns.flash["info"] =~ "email changed successfully"
|
conn.assigns.flash["info"] =~ "email changed successfully"
|
||||||
refute Accounts.get_user_by_email(current_user.email)
|
refute Accounts.get_user_by_email(current_user.email)
|
||||||
assert Accounts.get_user_by_email(email)
|
assert Accounts.get_user_by_email(email)
|
||||||
|
|
||||||
conn = get(conn, ~p"/users/settings/confirm_email/#{token}")
|
conn = get(conn, ~p"/users/settings/confirm_email/#{token}")
|
||||||
assert redirected_to(conn) == ~p"/users/settings"
|
assert redirected_to(conn) == ~p"/users/settings"
|
||||||
assert conn.assigns.flash["error"] =~ "email change link is invalid or it has expired"
|
conn.assigns.flash["error"] =~ "email change link is invalid or it has expired"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "does not update email with invalid token", %{conn: conn, current_user: current_user} do
|
test "does not update email with invalid token", %{conn: conn, current_user: current_user} do
|
||||||
conn = get(conn, ~p"/users/settings/confirm_email/oops")
|
conn = get(conn, ~p"/users/settings/confirm_email/#{"oops"}")
|
||||||
assert redirected_to(conn) == ~p"/users/settings"
|
assert redirected_to(conn) == ~p"/users/settings"
|
||||||
assert conn.assigns.flash["error"] =~ "email change link is invalid or it has expired"
|
conn.assigns.flash["error"] =~ "email change link is invalid or it has expired"
|
||||||
assert Accounts.get_user_by_email(current_user.email)
|
assert Accounts.get_user_by_email(current_user.email)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ defmodule MemexWeb.InviteLiveTest do
|
|||||||
|
|
||||||
test "lists all invites", %{conn: conn, invite: invite} do
|
test "lists all invites", %{conn: conn, invite: invite} do
|
||||||
{:ok, _index_live, html} = live(conn, ~p"/invites")
|
{:ok, _index_live, html} = live(conn, ~p"/invites")
|
||||||
|
|
||||||
assert html =~ "invites"
|
assert html =~ "invites"
|
||||||
assert html =~ invite.name
|
assert html =~ invite.name
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user