diff options
author | Karen Konou <konoukaren@gmail.com> | 2019-03-04 10:47:04 +0100 |
---|---|---|
committer | Karen Konou <konoukaren@gmail.com> | 2019-03-04 10:47:04 +0100 |
commit | 8302cdb5dc2b2f74d87f7b36a5ed67e29ea129c0 (patch) | |
tree | df561bd45f9db3c97d772aac3f6681fdbd35d967 | |
parent | abd0b85efd410c4d6c86957f1a725941f2165f7b (diff) | |
download | pleroma-8302cdb5dc2b2f74d87f7b36a5ed67e29ea129c0.tar.gz pleroma-8302cdb5dc2b2f74d87f7b36a5ed67e29ea129c0.zip |
Expand "to" of delete activities
-rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 5 | ||||
-rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 8d3116839..3650d330a 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -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), diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index a6f8b822a..0abb18303 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -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 |