summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrinpatch <rinpatch@sdf.org>2019-03-07 16:42:05 +0000
committerrinpatch <rinpatch@sdf.org>2019-03-07 16:42:05 +0000
commit2a9191a53eda9a2e1b067774804db54fc3eda5d0 (patch)
treee3e9f31eb7b8032995a37e171e86baaa03c57696
parent8e9f6d8f6954f3eb3f3b4b371ae9e886d88e2f0d (diff)
parent3c5926fe913287ee00a0efb93d2a8ecbddfd26c7 (diff)
downloadpleroma-2a9191a53eda9a2e1b067774804db54fc3eda5d0.tar.gz
pleroma-2a9191a53eda9a2e1b067774804db54fc3eda5d0.zip
Merge branch 'bugfix/mrf-antifollowbot-nil-bio' into 'develop'
MRF: anti followbot: gracefully handle nil display names See merge request pleroma/pleroma!909
-rw-r--r--lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex12
-rw-r--r--test/web/activity_pub/mrf/anti_followbot_policy_test.exs15
2 files changed, 24 insertions, 3 deletions
diff --git a/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex b/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex
index 7c6ad582a..34665a3a6 100644
--- a/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex
+++ b/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex
@@ -23,15 +23,21 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy do
defp score_displayname(_), do: 0.0
defp determine_if_followbot(%User{nickname: nickname, name: displayname}) do
+ # nickname will always be a binary string because it's generated by Pleroma.
nick_score =
nickname
|> String.downcase()
|> score_nickname()
+ # displayname will either be a binary string or nil, if a displayname isn't set.
name_score =
- displayname
- |> String.downcase()
- |> score_displayname()
+ if is_binary(displayname) do
+ displayname
+ |> String.downcase()
+ |> score_displayname()
+ else
+ 0.0
+ end
nick_score + name_score
end
diff --git a/test/web/activity_pub/mrf/anti_followbot_policy_test.exs b/test/web/activity_pub/mrf/anti_followbot_policy_test.exs
index 2ea4f9d3f..37a7bfcf7 100644
--- a/test/web/activity_pub/mrf/anti_followbot_policy_test.exs
+++ b/test/web/activity_pub/mrf/anti_followbot_policy_test.exs
@@ -54,4 +54,19 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicyTest do
{:ok, _} = AntiFollowbotPolicy.filter(message)
end
+
+ test "it gracefully handles nil display names" do
+ actor = insert(:user, %{name: nil})
+ target = insert(:user)
+
+ message = %{
+ "@context" => "https://www.w3.org/ns/activitystreams",
+ "type" => "Follow",
+ "actor" => actor.ap_id,
+ "object" => target.ap_id,
+ "id" => "https://example.com/activities/1234"
+ }
+
+ {:ok, _} = AntiFollowbotPolicy.filter(message)
+ end
end