logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 8dd7c099a77faea2ad5c0466121832ddabb09945
parent: 74135e13188a573313a40f147fe76a9a31b909d4
Author: rinpatch <rinpatch@sdf.org>
Date:   Sun,  3 Nov 2019 17:09:57 +0000

Merge branch 'bugfix/streamer-follows' into 'develop'

streamer: use direct object for filter checks when there is no valid child object in an activity

Closes #1291

See merge request pleroma/pleroma!1931

Diffstat:

Mlib/pleroma/web/streamer/worker.ex2+-
Mtest/web/streamer/streamer_test.exs18++++++++++++++++++
2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/lib/pleroma/web/streamer/worker.ex b/lib/pleroma/web/streamer/worker.ex @@ -136,7 +136,7 @@ defmodule Pleroma.Web.Streamer.Worker do recipients = MapSet.new(item.recipients) domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.domain_blocks) - with parent when not is_nil(parent) <- Object.normalize(item), + with parent <- Object.normalize(item) || item, true <- Enum.all?([blocks, mutes, reblog_mutes], &(item.actor not in &1)), true <- Enum.all?([blocks, mutes], &(parent.data["actor"] not in &1)), true <- MapSet.disjoint?(recipients, recipient_blocks), diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer/streamer_test.exs @@ -110,6 +110,24 @@ defmodule Pleroma.Web.StreamerTest do Streamer.stream("user:notification", notif) Task.await(task) end + + test "it sends follow activities to the 'user:notification' stream", %{ + user: user + } do + user2 = insert(:user) + task = Task.async(fn -> assert_receive {:text, _}, 4_000 end) + + Streamer.add_socket( + "user:notification", + %{transport_pid: task.pid, assigns: %{user: user}} + ) + + {:ok, _follower, _followed, _activity} = CommonAPI.follow(user2, user) + + # We don't directly pipe the notification to the streamer as it's already + # generated as a side effect of CommonAPI.follow(). + Task.await(task) + end end test "it sends to public" do