aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrinpatch <rinpatch@sdf.org>2019-11-03 17:09:57 +0000
committerrinpatch <rinpatch@sdf.org>2019-11-03 17:09:57 +0000
commit8dd7c099a77faea2ad5c0466121832ddabb09945 (patch)
tree5149e9c86f0c78547c5f60d957ccd83d8474cf5b
parent74135e13188a573313a40f147fe76a9a31b909d4 (diff)
parent4bf942583fdae27813f4af1f901c78eaff391b76 (diff)
downloadpleroma-8dd7c099a77faea2ad5c0466121832ddabb09945.tar.gz
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
-rw-r--r--lib/pleroma/web/streamer/worker.ex2
-rw-r--r--test/web/streamer/streamer_test.exs18
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/pleroma/web/streamer/worker.ex b/lib/pleroma/web/streamer/worker.ex
index c2ee9e1f5..33b24840d 100644
--- 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
index cb1015171..d6968f4d0 100644
--- 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