1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.ActivityPub.MRF.EnsureRePrependedTest do
6 use Pleroma.DataCase, async: true
10 alias Pleroma.Web.ActivityPub.MRF
11 alias Pleroma.Web.ActivityPub.MRF.EnsureRePrepended
13 describe "rewrites summary" do
14 test "it adds `re:` to summary object when child summary and parent summary equal" do
18 "summary" => "object-summary",
19 "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "object-summary"}}}
23 assert {:ok, res} = EnsureRePrepended.filter(message)
24 assert res["object"]["summary"] == "re: object-summary"
27 test "it adds `re:` to summary object when child summary containts re-subject of parent summary " do
31 "summary" => "object-summary",
32 "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "re: object-summary"}}}
36 assert {:ok, res} = EnsureRePrepended.filter(message)
37 assert res["object"]["summary"] == "re: object-summary"
40 test "it adds `re:` to history" do
44 "summary" => "object-summary",
45 "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "object-summary"}}},
46 "formerRepresentations" => %{
49 "summary" => "object-summary",
50 "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "object-summary"}}}
57 assert {:ok, res} = MRF.filter_one(EnsureRePrepended, message)
58 assert res["object"]["summary"] == "re: object-summary"
60 assert Enum.at(res["object"]["formerRepresentations"]["orderedItems"], 0)["summary"] ==
64 test "it accepts Updates" do
68 "summary" => "object-summary",
69 "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "object-summary"}}},
70 "formerRepresentations" => %{
73 "summary" => "object-summary",
74 "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "object-summary"}}}
81 assert {:ok, res} = MRF.filter_one(EnsureRePrepended, message)
82 assert res["object"]["summary"] == "re: object-summary"
84 assert Enum.at(res["object"]["formerRepresentations"]["orderedItems"], 0)["summary"] ==
89 describe "skip filter" do
90 test "it skip if type isn't 'Create' or 'Update'" do
92 "type" => "Annotation",
93 "object" => %{"summary" => "object-summary"}
96 assert {:ok, res} = EnsureRePrepended.filter(message)
100 test "it skip if summary is empty" do
104 "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "summary"}}}
108 assert {:ok, res} = EnsureRePrepended.filter(message)
109 assert res == message
112 test "it skip if inReplyTo is empty" do
113 message = %{"type" => "Create", "object" => %{"summary" => "summary"}}
114 assert {:ok, res} = EnsureRePrepended.filter(message)
115 assert res == message
118 test "it skip if parent and child summary isn't equal" do
122 "summary" => "object-summary",
123 "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "summary"}}}
127 assert {:ok, res} = EnsureRePrepended.filter(message)
128 assert res == message
131 test "it skips if the object is only a reference" do
134 "object" => "somereference"
137 assert {:ok, res} = EnsureRePrepended.filter(message)
138 assert res == message