1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.StreamerTest do
8 alias Pleroma.Web.Streamer
11 alias Pleroma.Web.CommonAPI
12 import Pleroma.Factory
14 test "it sends to public" do
16 other_user = insert(:user)
20 assert_receive {:text, _}, 4_000
24 transport_pid: task.pid,
30 {:ok, activity} = CommonAPI.post(other_user, %{"status" => "Test"})
33 "public" => [fake_socket]
36 Streamer.push_to_socket(topics, "public", activity)
42 assert_receive {:text, _}, 4_000
46 transport_pid: task.pid,
52 {:ok, activity} = CommonAPI.delete(activity.id, other_user)
55 "public" => [fake_socket]
58 Streamer.push_to_socket(topics, "public", activity)
63 test "it doesn't send to blocked users" do
65 blocked_user = insert(:user)
66 {:ok, user} = User.block(user, blocked_user)
70 refute_receive {:text, _}, 1_000
74 transport_pid: task.pid,
80 {:ok, activity} = CommonAPI.post(blocked_user, %{"status" => "Test"})
83 "public" => [fake_socket]
86 Streamer.push_to_socket(topics, "public", activity)
91 test "it doesn't send unwanted DMs to list" do
92 user_a = insert(:user)
93 user_b = insert(:user)
94 user_c = insert(:user)
96 {:ok, user_a} = User.follow(user_a, user_b)
98 {:ok, list} = List.create("Test", user_a)
99 {:ok, list} = List.follow(list, user_b)
103 refute_receive {:text, _}, 1_000
107 transport_pid: task.pid,
114 CommonAPI.post(user_b, %{
115 "status" => "@#{user_c.nickname} Test",
116 "visibility" => "direct"
120 "list:#{list.id}" => [fake_socket]
123 Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics)
128 test "it doesn't send unwanted private posts to list" do
129 user_a = insert(:user)
130 user_b = insert(:user)
132 {:ok, list} = List.create("Test", user_a)
133 {:ok, list} = List.follow(list, user_b)
137 refute_receive {:text, _}, 1_000
141 transport_pid: task.pid,
148 CommonAPI.post(user_b, %{
150 "visibility" => "private"
154 "list:#{list.id}" => [fake_socket]
157 Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics)
162 test "it send wanted private posts to list" do
163 user_a = insert(:user)
164 user_b = insert(:user)
166 {:ok, user_a} = User.follow(user_a, user_b)
168 {:ok, list} = List.create("Test", user_a)
169 {:ok, list} = List.follow(list, user_b)
173 assert_receive {:text, _}, 1_000
177 transport_pid: task.pid,
184 CommonAPI.post(user_b, %{
186 "visibility" => "private"
190 "list:#{list.id}" => [fake_socket]
193 Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics)