Merge branch 'stable' of git.pleroma.social:pleroma/pleroma into pleroma-2.1-rc0
[akkoma] / test / web / activity_pub / transmogrifier / undo_handling_test.exs
index a9ebfdb18c2dde831b978caf47d1184d33c8e77f..8683f71354d60dd5eb68831c166616ca20102865 100644 (file)
@@ -6,6 +6,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.UndoHandlingTest do
   use Pleroma.DataCase
 
   alias Pleroma.Activity
+  alias Pleroma.Object
   alias Pleroma.User
   alias Pleroma.Web.ActivityPub.Transmogrifier
   alias Pleroma.Web.CommonAPI
@@ -15,8 +16,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.UndoHandlingTest do
   test "it works for incoming emoji reaction undos" do
     user = insert(:user)
 
-    {:ok, activity} = CommonAPI.post(user, %{"status" => "hello"})
-    {:ok, reaction_activity, _object} = CommonAPI.react_with_emoji(activity.id, user, "👌")
+    {:ok, activity} = CommonAPI.post(user, %{status: "hello"})
+    {:ok, reaction_activity} = CommonAPI.react_with_emoji(activity.id, user, "👌")
 
     data =
       File.read!("test/fixtures/mastodon-undo-like.json")
@@ -33,7 +34,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.UndoHandlingTest do
 
   test "it returns an error for incoming unlikes wihout a like activity" do
     user = insert(:user)
-    {:ok, activity} = CommonAPI.post(user, %{"status" => "leave a like pls"})
+    {:ok, activity} = CommonAPI.post(user, %{status: "leave a like pls"})
 
     data =
       File.read!("test/fixtures/mastodon-undo-like.json")
@@ -45,7 +46,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.UndoHandlingTest do
 
   test "it works for incoming unlikes with an existing like activity" do
     user = insert(:user)
-    {:ok, activity} = CommonAPI.post(user, %{"status" => "leave a like pls"})
+    {:ok, activity} = CommonAPI.post(user, %{status: "leave a like pls"})
 
     like_data =
       File.read!("test/fixtures/mastodon-like.json")
@@ -67,12 +68,16 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.UndoHandlingTest do
     assert data["actor"] == "http://mastodon.example.org/users/admin"
     assert data["type"] == "Undo"
     assert data["id"] == "http://mastodon.example.org/users/admin#likes/2/undo"
-    assert data["object"]["id"] == "http://mastodon.example.org/users/admin#likes/2"
+    assert data["object"] == "http://mastodon.example.org/users/admin#likes/2"
+
+    note = Object.get_by_ap_id(like_data["object"])
+    assert note.data["like_count"] == 0
+    assert note.data["likes"] == []
   end
 
   test "it works for incoming unlikes with an existing like activity and a compact object" do
     user = insert(:user)
-    {:ok, activity} = CommonAPI.post(user, %{"status" => "leave a like pls"})
+    {:ok, activity} = CommonAPI.post(user, %{status: "leave a like pls"})
 
     like_data =
       File.read!("test/fixtures/mastodon-like.json")
@@ -94,12 +99,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.UndoHandlingTest do
     assert data["actor"] == "http://mastodon.example.org/users/admin"
     assert data["type"] == "Undo"
     assert data["id"] == "http://mastodon.example.org/users/admin#likes/2/undo"
-    assert data["object"]["id"] == "http://mastodon.example.org/users/admin#likes/2"
+    assert data["object"] == "http://mastodon.example.org/users/admin#likes/2"
   end
 
   test "it works for incoming unannounces with an existing notice" do
     user = insert(:user)
-    {:ok, activity} = CommonAPI.post(user, %{"status" => "hey"})
+    {:ok, activity} = CommonAPI.post(user, %{status: "hey"})
 
     announce_data =
       File.read!("test/fixtures/mastodon-announce.json")
@@ -120,15 +125,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.UndoHandlingTest do
     {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
 
     assert data["type"] == "Undo"
-    assert object_data = data["object"]
-    assert object_data["type"] == "Announce"
-    assert object_data["object"] == activity.data["object"]
 
-    assert object_data["id"] ==
+    assert data["object"] ==
              "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity"
   end
 
-  test "it works for incomming unfollows with an existing follow" do
+  test "it works for incoming unfollows with an existing follow" do
     user = insert(:user)
 
     follow_data =
@@ -174,9 +176,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.UndoHandlingTest do
 
     {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
     assert data["type"] == "Undo"
-    assert data["object"]["type"] == "Block"
-    assert data["object"]["object"] == user.ap_id
-    assert data["actor"] == "http://mastodon.example.org/users/admin"
+    assert data["object"] == block_data["id"]
 
     blocker = User.get_cached_by_ap_id(data["actor"])