commit: 1df7d428bccd1631fc7988675e4e249af129c5cd
parent 9d62fca315ab4b0c026828209c0cbc4df243af5b
Author: Ekaterina Vaartis <vaartis@kotobank.ch>
Date: Wed, 18 Jun 2025 20:11:08 +0300
Update preparing and tests for current codebase
Diffstat:
2 files changed, 24 insertions(+), 29 deletions(-)
diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex
@@ -92,19 +92,16 @@ defmodule Pleroma.Web.ActivityPub.Publisher do
uri = %{path: path} = URI.parse(inbox)
{:ok, data} = Transmogrifier.prepare_outgoing(activity.data)
- {actor, activity, data} =
+
+ {actor, data} =
with {_, false} <- {:actor_changed?, data["actor"] != activity.data["actor"]} do
- {orig_actor, activity, data}
+ {actor, data}
else
{:actor_changed?, true} ->
# If prepare_outgoing changes the actor, re-get it from the db
- actor = User.get_cached_by_ap_id(data["actor"])
-
- activity = %Activity{activity | actor: actor.ap_id}
-
- {actor, activity, data}
- end
-
+ new_actor = User.get_cached_by_ap_id(data["actor"])
+ {new_actor, data}
+ end
param_cc = Map.get(params, :cc, [])
diff --git a/test/pleroma/web/activity_pub/publisher_test.exs b/test/pleroma/web/activity_pub/publisher_test.exs
@@ -380,14 +380,18 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do
end
test_with_mock "Publishes with the new actor if prepare_outgoing changes the actor.",
- Pleroma.Web.Federator.Publisher,
+ Pleroma.Web.ActivityPub.Publisher,
[:passthrough],
[] do
+ mock(fn
+ %{method: :post, url: "https://domain.com/users/nick1/inbox", body: body} ->
+ {:ok, %Tesla.Env{status: 200, body: body}}
+ end)
+
other_user =
insert(:user, %{
local: false,
- inbox: "https://domain.com/users/nick1/inbox",
- ap_enabled: true
+ inbox: "https://domain.com/users/nick1/inbox"
})
actor = insert(:user)
@@ -401,25 +405,19 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do
with_mock Pleroma.Web.ActivityPub.Transmogrifier,
prepare_outgoing: fn data -> {:ok, Map.put(data, "actor", replaced_actor.ap_id)} end do
- res = Publisher.publish(actor, note_activity)
-
- assert res == :ok
+ prepared =
+ Publisher.prepare_one(%{
+ inbox: "https://domain.com/users/nick1/inbox",
+ activity_id: note_activity.id,
+ cc: ["https://domain.com/users/nick2/inbox"]
+ })
- refute called(
- Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{
- inbox: "https://domain.com/users/nick1/inbox",
- actor_id: actor.id,
- id: note_activity.data["id"]
- })
- )
+ {:ok, decoded} = Jason.decode(prepared.json)
+ assert decoded["actor"] == replaced_actor.ap_id
- assert called(
- Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{
- inbox: "https://domain.com/users/nick1/inbox",
- actor_id: replaced_actor.id,
- id: note_activity.data["id"]
- })
- )
+ {:ok, published} = Publisher.publish_one(prepared)
+ sent_activity = Jason.decode!(published.body)
+ assert sent_activity["actor"] == replaced_actor.ap_id
end
end