Merge branch 'fix/active-user-query' into 'develop'
authorHaelwenn <contact+git.pleroma.social@hacktivis.me>
Wed, 20 Jan 2021 20:07:30 +0000 (20:07 +0000)
committerHaelwenn <contact+git.pleroma.social@hacktivis.me>
Wed, 20 Jan 2021 20:07:30 +0000 (20:07 +0000)
Active users must be confirmed, and other related fixes

See merge request pleroma/pleroma!3267

lib/pleroma/user.ex
lib/pleroma/user/query.ex
test/pleroma/user_test.exs
test/pleroma/web/activity_pub/side_effects_test.exs

index d81abbd2b7838131920d30e8a2955bdd7bf22507..2aeacf8160ade0629dde2e3feb69de80b6a43361 100644 (file)
@@ -289,15 +289,7 @@ defmodule Pleroma.User do
   def account_status(%User{deactivated: true}), do: :deactivated
   def account_status(%User{password_reset_pending: true}), do: :password_reset_pending
   def account_status(%User{local: true, is_approved: false}), do: :approval_pending
-
-  def account_status(%User{local: true, is_confirmed: false}) do
-    if Config.get([:instance, :account_activation_required]) do
-      :confirmation_pending
-    else
-      :active
-    end
-  end
-
+  def account_status(%User{local: true, is_confirmed: false}), do: :confirmation_pending
   def account_status(%User{}), do: :active
 
   @spec visible_for(User.t(), User.t() | nil) ::
index 74ef1158a3ac2db39e325b0ba2c33870125aa34b..4076925aaa1853a73ee5ce1680c1c1a8e3595786 100644 (file)
@@ -139,6 +139,7 @@ defmodule Pleroma.User.Query do
   defp compose_query({:active, _}, query) do
     User.restrict_deactivated(query)
     |> where([u], u.is_approved == true)
+    |> where([u], u.is_confirmed == true)
   end
 
   defp compose_query({:legacy_active, _}, query) do
index 617d9b755fff0b8b6eb734382d31a3dc37c68101..7e1e75404f9c7213ab90c1f8df811b34b5167d38 100644 (file)
@@ -1563,31 +1563,15 @@ defmodule Pleroma.UserTest do
     end
   end
 
-  describe "delete/1 when confirmation is pending" do
-    setup do
-      user = insert(:user, is_confirmed: false)
-      {:ok, user: user}
-    end
+  test "delete/1 when confirmation is pending deletes the user" do
+    clear_config([:instance, :account_activation_required], true)
+    user = insert(:user, is_confirmed: false)
 
-    test "deletes user from database when activation required", %{user: user} do
-      clear_config([:instance, :account_activation_required], true)
-
-      {:ok, job} = User.delete(user)
-      {:ok, _} = ObanHelpers.perform(job)
-
-      refute User.get_cached_by_id(user.id)
-      refute User.get_by_id(user.id)
-    end
-
-    test "deactivates user when activation is not required", %{user: user} do
-      clear_config([:instance, :account_activation_required], false)
-
-      {:ok, job} = User.delete(user)
-      {:ok, _} = ObanHelpers.perform(job)
+    {:ok, job} = User.delete(user)
+    {:ok, _} = ObanHelpers.perform(job)
 
-      assert %{deactivated: true} = User.get_cached_by_id(user.id)
-      assert %{deactivated: true} = User.get_by_id(user.id)
-    end
+    refute User.get_cached_by_id(user.id)
+    refute User.get_by_id(user.id)
   end
 
   test "delete/1 when approval is pending deletes the user" do
@@ -1830,13 +1814,6 @@ defmodule Pleroma.UserTest do
       assert User.visible_for(user, other_user) == :visible
     end
 
-    test "returns true when the account is unconfirmed and confirmation is not required" do
-      user = insert(:user, local: true, is_confirmed: false)
-      other_user = insert(:user, local: true)
-
-      assert User.visible_for(user, other_user) == :visible
-    end
-
     test "returns true when the account is unconfirmed and being viewed by a privileged account (confirmation required)" do
       Pleroma.Config.put([:instance, :account_activation_required], true)
 
index e3f45ecdb62d2f21575d9a4dda3c49d34cad25b5..13167f50a8405e1598eca733957f07b3f310caa5 100644 (file)
@@ -165,14 +165,6 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do
       {:ok, delete: delete_user, user: user}
     end
 
-    test "when activation is not required", %{delete: delete, user: user} do
-      clear_config([:instance, :account_activation_required], false)
-      {:ok, _, _} = SideEffects.handle(delete)
-      ObanHelpers.perform_all()
-
-      assert User.get_cached_by_id(user.id).deactivated
-    end
-
     test "when activation is required", %{delete: delete, user: user} do
       clear_config([:instance, :account_activation_required], true)
       {:ok, _, _} = SideEffects.handle(delete)