Commit 28d5b40d authored by Karen Konou's avatar Karen Konou
Browse files

Add handling of objects not in database

parent 896f8580
Pipeline #8609 passed with stages
in 6 minutes and 54 seconds
......@@ -311,8 +311,14 @@ def delete(%Object{data: %{"id" => id, "actor" => actor}} = object, local \\ tru
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",
......
......@@ -691,12 +691,23 @@ test "decrements user note count only for public activities" 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"]
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment