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 10:18:45 +0000 (11:18 +0100)
lib/pleroma/web/activity_pub/activity_pub.ex
test/web/activity_pub/activity_pub_test.exs

index 783491b67c7950ecd78f07880b22c986572f5c80..bff3025ed7b4ac2a5964d378d8e659313b3e1f5a 100644 (file)
@@ -310,11 +310,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 f4029896cce0ce910790a595f468d5d654080a38..e607c7f4ddd26627ee534fec9c26aecff5514ace 100644 (file)
@@ -691,6 +691,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
       user = Repo.get(User, user.id)
       assert user.info.note_count == 10
     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