unbreak polls
authorWilliam Pitcock <nenolod@dereferenced.org>
Wed, 19 Jun 2019 16:33:49 +0000 (16:33 +0000)
committerWilliam Pitcock <nenolod@dereferenced.org>
Wed, 19 Jun 2019 16:33:49 +0000 (16:33 +0000)
lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex
test/web/activity_pub/mrf/anti_link_spam_policy_test.exs

index 33ea61f5c6430ee82600fd8be4f73c1330607144..14e5955ee17b37d985437dc1a5cea4477eb2893e 100644 (file)
@@ -20,6 +20,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy do
     |> length() > 0
   end
 
+  defp contains_links?(_), do: false
+
   def filter(%{"type" => "Create", "actor" => actor, "object" => object} = message) do
     with {:ok, %User{} = u} <- User.get_or_fetch_by_ap_id(actor),
          {:contains_links, true} <- {:contains_links, contains_links?(object)},
index a456e863c9045651bc86d65ae8f6ca0c7783d2c9..284c13336af60b6c3ba0877fc220ac74332b22e0 100644 (file)
@@ -22,6 +22,14 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicyTest do
     }
   }
 
+  @response_message %{
+    "type" => "Create",
+    "object" => %{
+      "name" => "yes",
+      "type" => "Answer"
+    }
+  }
+
   describe "with new user" do
     test "it allows posts without links" do
       user = insert(:user)
@@ -117,4 +125,16 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicyTest do
       {:reject, _} = AntiLinkSpamPolicy.filter(message)
     end
   end
+
+  describe "with contentless-objects" do
+    test "it does not reject them or error out" do
+      user = insert(:user, info: %{note_count: 1})
+
+      message =
+        @response_message
+        |> Map.put("actor", user.ap_id)
+
+      {:ok, _message} = AntiLinkSpamPolicy.filter(message)
+    end
+  end
 end