Merge branch '1258-anti-link-spam-exemption' into 'develop'
authorHaelwenn <contact+git.pleroma.social@hacktivis.me>
Fri, 26 Jun 2020 16:59:46 +0000 (16:59 +0000)
committerHaelwenn <contact+git.pleroma.social@hacktivis.me>
Fri, 26 Jun 2020 16:59:46 +0000 (16:59 +0000)
AntiSpamLinkPolicy: Exempt local users.

Closes #1258

See merge request pleroma/pleroma!2686

lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex
test/web/activity_pub/mrf/anti_link_spam_policy_test.exs

index 9e78009975e8cda92ee599ac83b81e542c436632..a7e187b5e4df03ab5c474df31194712b38362a8f 100644 (file)
@@ -27,11 +27,14 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy do
 
   @impl true
   def filter(%{"type" => "Create", "actor" => actor, "object" => object} = message) do
-    with {:ok, %User{} = u} <- User.get_or_fetch_by_ap_id(actor),
+    with {:ok, %User{local: false} = u} <- User.get_or_fetch_by_ap_id(actor),
          {:contains_links, true} <- {:contains_links, contains_links?(object)},
          {:old_user, true} <- {:old_user, old_user?(u)} do
       {:ok, message}
     else
+      {:ok, %User{local: true}} ->
+        {:ok, message}
+
       {:contains_links, false} ->
         {:ok, message}
 
index 1a13699bef1bffd63dde77ae4ea85972b5b09e3a..6867c98534885e2e72281f33b4927a2eb65bf6d9 100644 (file)
@@ -33,7 +33,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicyTest do
 
   describe "with new user" do
     test "it allows posts without links" do
-      user = insert(:user)
+      user = insert(:user, local: false)
 
       assert user.note_count == 0
 
@@ -45,7 +45,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicyTest do
     end
 
     test "it disallows posts with links" do
-      user = insert(:user)
+      user = insert(:user, local: false)
 
       assert user.note_count == 0
 
@@ -55,6 +55,18 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicyTest do
 
       {:reject, _} = AntiLinkSpamPolicy.filter(message)
     end
+
+    test "it allows posts with links for local users" do
+      user = insert(:user)
+
+      assert user.note_count == 0
+
+      message =
+        @linkful_message
+        |> Map.put("actor", user.ap_id)
+
+      {:ok, _message} = AntiLinkSpamPolicy.filter(message)
+    end
   end
 
   describe "with old user" do