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.ObjectAgePolicyTest do
9 alias Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy
10 alias Pleroma.Web.ActivityPub.Visibility
13 clear_config(:mrf_object_age,
15 actions: [:delist, :strip_followers]
19 Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
23 describe "with reject action" do
24 test "it rejects an old post" do
25 Config.put([:mrf_object_age, :actions], [:reject])
28 File.read!("test/fixtures/mastodon-post-activity.json")
31 {:reject, _} = ObjectAgePolicy.filter(data)
34 test "it allows a new post" do
35 Config.put([:mrf_object_age, :actions], [:reject])
38 File.read!("test/fixtures/mastodon-post-activity.json")
40 |> Map.put("published", DateTime.utc_now() |> DateTime.to_iso8601())
42 {:ok, _} = ObjectAgePolicy.filter(data)
46 describe "with delist action" do
47 test "it delists an old post" do
48 Config.put([:mrf_object_age, :actions], [:delist])
51 File.read!("test/fixtures/mastodon-post-activity.json")
54 {:ok, _u} = User.get_or_fetch_by_ap_id(data["actor"])
56 {:ok, data} = ObjectAgePolicy.filter(data)
58 assert Visibility.get_visibility(%{data: data}) == "unlisted"
61 test "it allows a new post" do
62 Config.put([:mrf_object_age, :actions], [:delist])
65 File.read!("test/fixtures/mastodon-post-activity.json")
67 |> Map.put("published", DateTime.utc_now() |> DateTime.to_iso8601())
69 {:ok, _user} = User.get_or_fetch_by_ap_id(data["actor"])
71 {:ok, ^data} = ObjectAgePolicy.filter(data)
75 describe "with strip_followers action" do
76 test "it strips followers collections from an old post" do
77 Config.put([:mrf_object_age, :actions], [:strip_followers])
80 File.read!("test/fixtures/mastodon-post-activity.json")
83 {:ok, user} = User.get_or_fetch_by_ap_id(data["actor"])
85 {:ok, data} = ObjectAgePolicy.filter(data)
87 refute user.follower_address in data["to"]
88 refute user.follower_address in data["cc"]
91 test "it allows a new post" do
92 Config.put([:mrf_object_age, :actions], [:strip_followers])
95 File.read!("test/fixtures/mastodon-post-activity.json")
97 |> Map.put("published", DateTime.utc_now() |> DateTime.to_iso8601())
99 {:ok, _u} = User.get_or_fetch_by_ap_id(data["actor"])
101 {:ok, ^data} = ObjectAgePolicy.filter(data)