diff --git a/lib/philomena/users.ex b/lib/philomena/users.ex index 2bc52e5e..172b265c 100644 --- a/lib/philomena/users.ex +++ b/lib/philomena/users.ex @@ -796,7 +796,7 @@ defmodule Philomena.Users do end @doc """ - Reactivates a previously deactivated user account. + Reactivates a previously deactivated user account. Removes all "reactivate" user tokens for that user if they exist. ## Examples @@ -805,6 +805,8 @@ defmodule Philomena.Users do """ def reactivate_user(%User{} = user) do + UserToken.user_and_contexts_query(user, ["reactivate"]) |> Repo.delete_all() + user |> User.reactivate_changeset() |> Repo.update() diff --git a/test/philomena_web/controllers/reactivation_controller_test.exs b/test/philomena_web/controllers/reactivation_controller_test.exs index 3c211902..7717d476 100644 --- a/test/philomena_web/controllers/reactivation_controller_test.exs +++ b/test/philomena_web/controllers/reactivation_controller_test.exs @@ -1,16 +1,20 @@ defmodule PhilomenaWeb.ReactivationControllerTest do use PhilomenaWeb.ConnCase, async: true + alias Philomena.Repo + alias Philomena.Users.UserToken alias Philomena.Users + import Philomena.UsersFixtures - setup :register_and_log_in_user + setup do + %{user: deactivated_user_fixture()} + end @host PhilomenaWeb.Endpoint.config(:url)[:host] @port PhilomenaWeb.Endpoint.config(:http)[:port] describe "GET /reactivations/:id" do test "renders the reactivate account page", %{conn: conn} do - conn = delete(conn, ~p"/deactivations") conn = get(conn, ~p"/reactivations/pinkie-pie-is-best-pony") response = html_response(conn, 200) assert response =~ "