diff options
| -rw-r--r-- | lib/pleroma/web/streamer/worker.ex | 2 | ||||
| -rw-r--r-- | test/web/streamer/streamer_test.exs | 18 | 
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  | 
