1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicyTest do
9 alias Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy
10 @public "https://www.w3.org/ns/activitystreams#Public"
12 defp generate_messages(actor) do
14 "actor" => actor.ap_id,
17 "to" => [@public, "f"],
18 "cc" => [actor.follower_address, "d"]
21 "actor" => actor.ap_id,
23 "object" => %{"to" => ["f", actor.follower_address], "cc" => ["d", @public]},
24 "to" => ["f", actor.follower_address],
25 "cc" => ["d", @public]
29 test "removes from the federated timeline by nickname heuristics 1" do
30 actor = insert(:user, %{nickname: "annoying_ebooks@example.com"})
32 {message, except_message} = generate_messages(actor)
34 assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message}
37 test "removes from the federated timeline by nickname heuristics 2" do
38 actor = insert(:user, %{nickname: "cirnonewsnetworkbot@meow.cat"})
40 {message, except_message} = generate_messages(actor)
42 assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message}
45 test "removes from the federated timeline by actor type Application" do
46 actor = insert(:user, %{actor_type: "Application"})
48 {message, except_message} = generate_messages(actor)
50 assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message}
53 test "removes from the federated timeline by actor type Service" do
54 actor = insert(:user, %{actor_type: "Service"})
56 {message, except_message} = generate_messages(actor)
58 assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message}