Removed file as requested
[akkoma] / test / web / streamer_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.StreamerTest do
6 use Pleroma.DataCase
7
8 alias Pleroma.Web.Streamer
9 alias Pleroma.{List, User}
10 alias Pleroma.Web.CommonAPI
11 import Pleroma.Factory
12
13 test "it sends to public" do
14 user = insert(:user)
15 other_user = insert(:user)
16
17 task =
18 Task.async(fn ->
19 assert_receive {:text, _}, 4_000
20 end)
21
22 fake_socket = %{
23 transport_pid: task.pid,
24 assigns: %{
25 user: user
26 }
27 }
28
29 {:ok, activity} = CommonAPI.post(other_user, %{"status" => "Test"})
30
31 topics = %{
32 "public" => [fake_socket]
33 }
34
35 Streamer.push_to_socket(topics, "public", activity)
36
37 Task.await(task)
38 end
39
40 test "it doesn't send to blocked users" do
41 user = insert(:user)
42 blocked_user = insert(:user)
43 {:ok, user} = User.block(user, blocked_user)
44
45 task =
46 Task.async(fn ->
47 refute_receive {:text, _}, 1_000
48 end)
49
50 fake_socket = %{
51 transport_pid: task.pid,
52 assigns: %{
53 user: user
54 }
55 }
56
57 {:ok, activity} = CommonAPI.post(blocked_user, %{"status" => "Test"})
58
59 topics = %{
60 "public" => [fake_socket]
61 }
62
63 Streamer.push_to_socket(topics, "public", activity)
64
65 Task.await(task)
66 end
67
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)
72
73 {:ok, user_a} = User.follow(user_a, user_b)
74
75 {:ok, list} = List.create("Test", user_a)
76 {:ok, list} = List.follow(list, user_b)
77
78 task =
79 Task.async(fn ->
80 refute_receive {:text, _}, 1_000
81 end)
82
83 fake_socket = %{
84 transport_pid: task.pid,
85 assigns: %{
86 user: user_a
87 }
88 }
89
90 {:ok, activity} =
91 CommonAPI.post(user_b, %{
92 "status" => "@#{user_c.nickname} Test",
93 "visibility" => "direct"
94 })
95
96 topics = %{
97 "list:#{list.id}" => [fake_socket]
98 }
99
100 Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics)
101
102 Task.await(task)
103 end
104
105 test "it doesn't send unwanted private posts to list" do
106 user_a = insert(:user)
107 user_b = insert(:user)
108
109 {:ok, list} = List.create("Test", user_a)
110 {:ok, list} = List.follow(list, user_b)
111
112 task =
113 Task.async(fn ->
114 refute_receive {:text, _}, 1_000
115 end)
116
117 fake_socket = %{
118 transport_pid: task.pid,
119 assigns: %{
120 user: user_a
121 }
122 }
123
124 {:ok, activity} =
125 CommonAPI.post(user_b, %{
126 "status" => "Test",
127 "visibility" => "private"
128 })
129
130 topics = %{
131 "list:#{list.id}" => [fake_socket]
132 }
133
134 Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics)
135
136 Task.await(task)
137 end
138
139 test "it send wanted private posts to list" do
140 user_a = insert(:user)
141 user_b = insert(:user)
142
143 {:ok, user_a} = User.follow(user_a, user_b)
144
145 {:ok, list} = List.create("Test", user_a)
146 {:ok, list} = List.follow(list, user_b)
147
148 task =
149 Task.async(fn ->
150 assert_receive {:text, _}, 1_000
151 end)
152
153 fake_socket = %{
154 transport_pid: task.pid,
155 assigns: %{
156 user: user_a
157 }
158 }
159
160 {:ok, activity} =
161 CommonAPI.post(user_b, %{
162 "status" => "Test",
163 "visibility" => "private"
164 })
165
166 topics = %{
167 "list:#{list.id}" => [fake_socket]
168 }
169
170 Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics)
171
172 Task.await(task)
173 end
174 end