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
9 alias Pleroma.{List, User}
10 alias Pleroma.Web.CommonAPI
11 import Pleroma.Factory
13 test "it sends to public" do
15 other_user = insert(:user)
19 assert_receive {:text, _}, 4_000
23 transport_pid: task.pid,
29 {:ok, activity} = CommonAPI.post(other_user, %{"status" => "Test"})
32 "public" => [fake_socket]
35 Streamer.push_to_socket(topics, "public", activity)
40 test "it doesn't send to blocked users" do
42 blocked_user = insert(:user)
43 {:ok, user} = User.block(user, blocked_user)
47 refute_receive {:text, _}, 1_000
51 transport_pid: task.pid,
57 {:ok, activity} = CommonAPI.post(blocked_user, %{"status" => "Test"})
60 "public" => [fake_socket]
63 Streamer.push_to_socket(topics, "public", activity)
68 test "it doesn't send unwanted DMs to list" do
69 user_a = insert(:user)
70 user_b = insert(:user)
71 user_c = insert(:user)
73 {:ok, user_a} = User.follow(user_a, user_b)
75 {:ok, list} = List.create("Test", user_a)
76 {:ok, list} = List.follow(list, user_b)
80 refute_receive {:text, _}, 1_000
84 transport_pid: task.pid,
91 CommonAPI.post(user_b, %{
92 "status" => "@#{user_c.nickname} Test",
93 "visibility" => "direct"
97 "list:#{list.id}" => [fake_socket]
100 Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics)
105 test "it doesn't send unwanted private posts to list" do
106 user_a = insert(:user)
107 user_b = insert(:user)
109 {:ok, list} = List.create("Test", user_a)
110 {:ok, list} = List.follow(list, user_b)
114 refute_receive {:text, _}, 1_000
118 transport_pid: task.pid,
125 CommonAPI.post(user_b, %{
127 "visibility" => "private"
131 "list:#{list.id}" => [fake_socket]
134 Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics)
139 test "it send wanted private posts to list" do
140 user_a = insert(:user)
141 user_b = insert(:user)
143 {:ok, user_a} = User.follow(user_a, user_b)
145 {:ok, list} = List.create("Test", user_a)
146 {:ok, list} = List.follow(list, user_b)
150 assert_receive {:text, _}, 1_000
154 transport_pid: task.pid,
161 CommonAPI.post(user_b, %{
163 "visibility" => "private"
167 "list:#{list.id}" => [fake_socket]
170 Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics)