Browse Source

Merge branch 'bugfix/filter-boosted-blocks' into 'develop'

activitypub: fix filtering of boosts from blocked users

See merge request pleroma/pleroma!1074
tags/v1.1.4
Haelwenn 5 years ago
parent
commit
eba3db0966
2 changed files with 29 additions and 0 deletions
  1. +7
    -0
      lib/pleroma/web/activity_pub/activity_pub.ex
  2. +22
    -0
      test/web/activity_pub/activity_pub_test.exs

+ 7
- 0
lib/pleroma/web/activity_pub/activity_pub.ex View File

@@ -713,6 +713,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
activity in query,
where: fragment("not (? = ANY(?))", activity.actor, ^blocks),
where: fragment("not (? && ?)", activity.recipients, ^blocks),
where:
fragment(
"not (?->>'type' = 'Announce' and ?->'to' \\?| ?)",
activity.data,
activity.data,
^blocks
),
where: fragment("not (split_part(?, '/', 3) = ANY(?))", activity.actor, ^domain_blocks)
)
end


+ 22
- 0
test/web/activity_pub/activity_pub_test.exs View File

@@ -364,6 +364,28 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
refute Enum.member?(activities, activity_four)
end

test "doesn't return announce activities concerning blocked users" do
blocker = insert(:user)
blockee = insert(:user)
friend = insert(:user)

{:ok, blocker} = User.block(blocker, blockee)

{:ok, activity_one} = CommonAPI.post(friend, %{"status" => "hey!"})

{:ok, activity_two} = CommonAPI.post(blockee, %{"status" => "hey! @#{friend.nickname}"})

{:ok, activity_three, _} = CommonAPI.repeat(activity_two.id, friend)

activities =
ActivityPub.fetch_activities([], %{"blocking_user" => blocker})
|> Enum.map(fn act -> act.id end)

assert Enum.member?(activities, activity_one.id)
refute Enum.member?(activities, activity_two.id)
refute Enum.member?(activities, activity_three.id)
end

test "doesn't return muted activities" do
activity_one = insert(:note_activity)
activity_two = insert(:note_activity)


Loading…
Cancel
Save