Expand "to" of delete activities
authorKaren Konou <konoukaren@gmail.com>
Mon, 4 Mar 2019 09:47:04 +0000 (10:47 +0100)
committerKaren Konou <konoukaren@gmail.com>
Mon, 4 Mar 2019 09:47:04 +0000 (10:47 +0100)
lib/pleroma/web/activity_pub/activity_pub.ex
test/web/activity_pub/activity_pub_test.exs

index 8d311683949e834638296861df7e6a21cde82a27..3650d330a107624eff5fad1df182e035fa6b3676 100644 (file)
@@ -305,11 +305,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
   def delete(%Object{data: %{"id" => id, "actor" => actor}} = object, local \\ true) do
     user = User.get_cached_by_ap_id(actor)
 
+    to = object.data["to"] || [] ++ object.data["cc"] ||
+        [] ++ [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"]
+
     data = %{
       "type" => "Delete",
       "actor" => actor,
       "object" => id,
-      "to" => [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"]
+      "to" => Enum.uniq(to)
     }
 
     with {:ok, _} <- Object.delete(object),
index a6f8b822ac1124b64cb47558941a917b9518c758..0abb1830349025608d3d11ed9b4c01d040ea0da7 100644 (file)
@@ -591,6 +591,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
 
       assert Repo.get(Object, object.id).data["type"] == "Tombstone"
     end
+
+    test "it creates a delete activity and checks that it is also sent to users mentioned by the deleted object" do
+      user = insert(:user)
+      note = insert(:note_activity)
+      object = Object.get_by_ap_id(note.data["object"]["id"])
+      object = Kernel.put_in(object.data["to"], [user.ap_id])
+      {:ok, delete} = ActivityPub.delete(object)
+
+      assert user.ap_id in delete.data["to"]
+    end
   end
 
   describe "timeline post-processing" do