1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.ActivityPub.MRF.HashtagPolicyTest do
6 use Oban.Testing, repo: Pleroma.Repo
9 alias Pleroma.Web.ActivityPub.Transmogrifier
10 alias Pleroma.Web.CommonAPI
12 import Pleroma.Factory
14 test "it sets the sensitive property with relevant hashtags" do
17 {:ok, activity} = CommonAPI.post(user, %{status: "#nsfw hey"})
18 {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
20 assert modified["object"]["sensitive"]
23 test "it is history-aware" do
35 ["object", "formerRepresentations"],
37 "type" => "OrderedCollection",
42 [%{"type" => "Hashtag", "name" => "#nsfw"}]
49 Pleroma.Web.ActivityPub.MRF.filter_one(
50 Pleroma.Web.ActivityPub.MRF.HashtagPolicy,
54 refute modified["object"]["sensitive"]
55 assert Enum.at(modified["object"]["formerRepresentations"]["orderedItems"], 0)["sensitive"]
58 test "it works with Update" do
70 ["object", "formerRepresentations"],
72 "type" => "OrderedCollection",
77 [%{"type" => "Hashtag", "name" => "#nsfw"}]
84 Pleroma.Web.ActivityPub.MRF.filter_one(
85 Pleroma.Web.ActivityPub.MRF.HashtagPolicy,
89 refute modified["object"]["sensitive"]
90 assert Enum.at(modified["object"]["formerRepresentations"]["orderedItems"], 0)["sensitive"]
93 test "it doesn't sets the sensitive property with irrelevant hashtags" do
96 {:ok, activity} = CommonAPI.post(user, %{status: "#cofe hey"})
97 {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
99 refute modified["object"]["sensitive"]