e3325d1444ea28058915635dd75bca6df03c6694
[akkoma] / test / pleroma / web / activity_pub / mrf / force_bot_unlisted_policy_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicyTest do
6 use Pleroma.DataCase, async: true
7 import Pleroma.Factory
8
9 alias Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy
10 @public "https://www.w3.org/ns/activitystreams#Public"
11
12 defp generate_messages(actor) do
13 {%{
14 "actor" => actor.ap_id,
15 "type" => "Create",
16 "object" => %{},
17 "to" => [@public, "f"],
18 "cc" => [actor.follower_address, "d"]
19 },
20 %{
21 "actor" => actor.ap_id,
22 "type" => "Create",
23 "object" => %{"to" => ["f", actor.follower_address], "cc" => ["d", @public]},
24 "to" => ["f", actor.follower_address],
25 "cc" => ["d", @public]
26 }}
27 end
28
29 test "removes from the federated timeline by nickname heuristics 1" do
30 actor = insert(:user, %{nickname: "annoying_ebooks@example.com"})
31
32 {message, except_message} = generate_messages(actor)
33
34 assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message}
35 end
36
37 test "removes from the federated timeline by nickname heuristics 2" do
38 actor = insert(:user, %{nickname: "cirnonewsnetworkbot@meow.cat"})
39
40 {message, except_message} = generate_messages(actor)
41
42 assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message}
43 end
44
45 test "removes from the federated timeline by actor type Application" do
46 actor = insert(:user, %{actor_type: "Application"})
47
48 {message, except_message} = generate_messages(actor)
49
50 assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message}
51 end
52
53 test "removes from the federated timeline by actor type Service" do
54 actor = insert(:user, %{actor_type: "Service"})
55
56 {message, except_message} = generate_messages(actor)
57
58 assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message}
59 end
60 end