diff options
author | rinpatch <rinpatch@sdf.org> | 2019-03-07 11:31:08 +0000 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2019-03-07 11:31:08 +0000 |
commit | 992145e64ce40ca8eb85367c78df1696ad0e414c (patch) | |
tree | 8a65ba69a0c4df507aeaa877ca1765d3e07c8f64 | |
parent | ed5a1bbdfcc8b85330c7d4c8f8e08b6c2599ffa5 (diff) | |
parent | c2faae70dfc138efbeb3edccf97c22c2546a665a (diff) | |
download | pleroma-992145e64ce40ca8eb85367c78df1696ad0e414c.tar.gz pleroma-992145e64ce40ca8eb85367c78df1696ad0e414c.zip |
Merge branch 'bugfix/delete-activity-audience' into 'develop'
expand the audience of delete activities to all recipients of the deleted object
Closes #682
See merge request pleroma/pleroma!891
-rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 3 | ||||
-rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 21 |
2 files changed, 23 insertions, 1 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 783491b67..adb42b9ab 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -309,12 +309,13 @@ 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"] || [] data = %{ "type" => "Delete", "actor" => actor, "object" => id, - "to" => [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"] + "to" => 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 f4029896c..10c5258d0 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -691,6 +691,27 @@ 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) + + {:ok, object} = + Object.get_by_ap_id(note.data["object"]["id"]) + |> Object.change(%{ + data: %{ + "actor" => note.data["object"]["actor"], + "id" => note.data["object"]["id"], + "to" => [user.ap_id], + "type" => "Note" + } + }) + |> Object.update_and_set_cache() + + {:ok, delete} = ActivityPub.delete(object) + + assert user.ap_id in delete.data["to"] + end end describe "timeline post-processing" do |