total rebase
[anni] / test / pleroma / web / activity_pub / mrf / quote_to_link_tag_policy_test.exs
diff --git a/test/pleroma/web/activity_pub/mrf/quote_to_link_tag_policy_test.exs b/test/pleroma/web/activity_pub/mrf/quote_to_link_tag_policy_test.exs
new file mode 100644 (file)
index 0000000..96b49b6
--- /dev/null
@@ -0,0 +1,73 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.ActivityPub.MRF.QuoteToLinkTagPolicyTest do
+  alias Pleroma.Web.ActivityPub.MRF.QuoteToLinkTagPolicy
+
+  use Pleroma.DataCase
+
+  require Pleroma.Constants
+
+  test "Add quote url to Link tag" do
+    quote_url = "https://gleasonator.com/objects/1234"
+
+    activity = %{
+      "type" => "Create",
+      "actor" => "https://gleasonator.com/users/alex",
+      "object" => %{
+        "type" => "Note",
+        "content" => "Nice post",
+        "quoteUrl" => quote_url
+      }
+    }
+
+    {:ok, %{"object" => object}} = QuoteToLinkTagPolicy.filter(activity)
+
+    assert object["tag"] == [
+             %{
+               "type" => "Link",
+               "href" => quote_url,
+               "mediaType" => Pleroma.Constants.activity_json_canonical_mime_type()
+             }
+           ]
+  end
+
+  test "Add quote url to Link tag, append to the end" do
+    quote_url = "https://gleasonator.com/objects/1234"
+
+    activity = %{
+      "type" => "Create",
+      "actor" => "https://gleasonator.com/users/alex",
+      "object" => %{
+        "type" => "Note",
+        "content" => "Nice post",
+        "quoteUrl" => quote_url,
+        "tag" => [%{"type" => "Hashtag", "name" => "#foo"}]
+      }
+    }
+
+    {:ok, %{"object" => object}} = QuoteToLinkTagPolicy.filter(activity)
+
+    assert [_, tag] = object["tag"]
+
+    assert tag == %{
+             "type" => "Link",
+             "href" => quote_url,
+             "mediaType" => Pleroma.Constants.activity_json_canonical_mime_type()
+           }
+  end
+
+  test "Bypass posts without quoteUrl" do
+    activity = %{
+      "type" => "Create",
+      "actor" => "https://gleasonator.com/users/alex",
+      "object" => %{
+        "type" => "Note",
+        "content" => "Nice post"
+      }
+    }
+
+    assert {:ok, ^activity} = QuoteToLinkTagPolicy.filter(activity)
+  end
+end