Fetch the same data from json webfinger as from xml webfinger.
[akkoma] / test / web / activity_pub / transmogrifier_test.exs
index 2803f1a0533cd10b42df0f903181e3ce025b63b6..caad9737a556ad8f4ffecf8032624d94f77c1d27 100644 (file)
@@ -1,6 +1,7 @@
 defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
   use Pleroma.DataCase
   alias Pleroma.Web.ActivityPub.Transmogrifier
+  alias Pleroma.Web.OStatus
   alias Pleroma.Activity
   alias Pleroma.User
   alias Pleroma.Repo
@@ -148,6 +149,23 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
       assert user.info["banner"]["url"] == [%{"href" => "https://cd.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"}]
       assert user.bio == "<p>Some bio</p>"
     end
+
+    test "it works for incoming deletes" do
+      activity = insert(:note_activity)
+      data = File.read!("test/fixtures/mastodon-delete.json")
+      |> Poison.decode!
+
+      object = data["object"]
+      |> Map.put("id", activity.data["object"]["id"])
+
+      data = data
+      |> Map.put("object", object)
+      |> Map.put("actor", activity.data["actor"])
+
+      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
+
+      refute Repo.get(Activity, activity.id)
+    end
   end
 
   describe "prepare outgoing" do
@@ -203,6 +221,30 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
 
       assert modified["object"]["actor"] == modified["object"]["attributedTo"]
     end
+
+    test "it translates ostatus IDs to external URLs" do
+      incoming = File.read!("test/fixtures/incoming_note_activity.xml")
+      {:ok, [referent_activity]} = OStatus.handle_incoming(incoming)
+
+      user = insert(:user)
+
+      {:ok, activity, _} = CommonAPI.favorite(referent_activity.id, user)
+      {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
+
+      assert modified["object"] == "http://gs.example.org:4040/index.php/notice/29"
+    end
+
+    test "it translates ostatus reply_to IDs to external URLs" do
+      incoming = File.read!("test/fixtures/incoming_note_activity.xml")
+      {:ok, [referred_activity]} = OStatus.handle_incoming(incoming)
+
+      user = insert(:user)
+
+      {:ok, activity} = CommonAPI.post(user, %{"status" => "HI!", "in_reply_to_status_id" => referred_activity.id})
+      {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
+
+      assert modified["object"]["inReplyTo"] == "http://gs.example.org:4040/index.php/notice/29"
+    end
   end
 
   describe "user upgrade" do
@@ -256,18 +298,5 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
       refute Repo.get(WebsubClientSubscription, ws.id)
       assert Repo.get(WebsubClientSubscription, ws2.id)
     end
-
-    test "it deletes all websub server subscriptions with the server as callback" do
-      subscription = %WebsubClientSubscription{topic: "https://niu.moe/users/rye.atom"}
-      {:ok, ws} = Repo.insert(subscription)
-
-      subscription = %WebsubClientSubscription{topic: "https://niu.moe/users/pasty.atom"}
-      {:ok, ws2} = Repo.insert(subscription)
-
-      Transmogrifier.maybe_retire_websub("https://niu.moe/users/rye")
-
-      refute Repo.get(WebsubClientSubscription, ws.id)
-      assert Repo.get(WebsubClientSubscription, ws2.id)
-    end
   end
 end