From dca6bee2f7eba1dc366cc65d3087f20678549739 Mon Sep 17 00:00:00 2001
From: Karen Konou <konoukaren@gmail.com>
Date: Fri, 15 Feb 2019 13:43:14 +0100
Subject: [PATCH] Rename test, add check for follower collection when delisting

---
 .../web/activity_pub/mrf/hellthread_policy.ex   | 17 +++++++++++------
 .../activity_pub/mrf/hellthread_policy_test.exs |  2 +-
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
index 95211c596..1fd7b9c67 100644
--- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
+++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
@@ -10,17 +10,22 @@ defp delist_message(message) do
     delist_threshold = Pleroma.Config.get([:mrf_hellthread, :delist_threshold])
     follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address
 
+    follower_collection? = Enum.member?(message["to"] ++ message["cc"], follower_collection)
+
     message =
-      with {:public, recipients} <- get_recipient_count(message) do
-        if recipients > delist_threshold and delist_threshold > 0 do
+      case recipients = get_recipient_count(message) do
+        {:public, _} when follower_collection? and recipients > delist_threshold ->
           message
           |> Map.put("to", [follower_collection])
           |> Map.put("cc", ["https://www.w3.org/ns/activitystreams#Public"])
-        else
+
+        {:public, _} when recipients > delist_threshold ->
+          message
+          |> Map.put("to", [])
+          |> Map.put("cc", ["https://www.w3.org/ns/activitystreams#Public"])
+
+        _ ->
           message
-        end
-      else
-        _ -> message
       end
 
     {:ok, message}
diff --git a/test/web/activity_pub/mrf/hellthread_policy_test.exs b/test/web/activity_pub/mrf/hellthread_policy_test.exs
index b5bdd35cc..ebf9997cd 100644
--- a/test/web/activity_pub/mrf/hellthread_policy_test.exs
+++ b/test/web/activity_pub/mrf/hellthread_policy_test.exs
@@ -41,7 +41,7 @@ test "delist test", %{user: user, message: message} do
       assert "https://www.w3.org/ns/activitystreams#Public" in message["cc"]
     end
 
-    test "threshold test", %{message: message} do
+    test "excludes follower collection and public URI from threshold count", %{message: message} do
       Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 0, reject_threshold: 3})
 
       {:ok, _} = filter(message)