Add handling of objects not in database
authorKaren Konou <konoukaren@gmail.com>
Tue, 5 Mar 2019 22:15:22 +0000 (23:15 +0100)
committerKaren Konou <konoukaren@gmail.com>
Tue, 5 Mar 2019 22:15:22 +0000 (23:15 +0100)
lib/pleroma/web/activity_pub/activity_pub.ex
test/web/activity_pub/activity_pub_test.exs

index 98639883e071d2eb6462ccccc69a929abbedb63e..7e7a43c5556cde759818cd106eace8c2eb7366ef 100644 (file)
@@ -311,8 +311,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub 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"]
+      case Object.get_cached_by_ap_id(id) do
+        nil ->
+          [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"]
+
+        object ->
+          object.data["to"] || [] ++ object.data["cc"] ||
+            [] ++ [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"]
+      end
 
     data = %{
       "type" => "Delete",
index e607c7f4ddd26627ee534fec9c26aecff5514ace..10c5258d0cb5787b39bfbb41cd8076100986e2d4 100644 (file)
@@ -691,12 +691,23 @@ 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, 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"]