logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/
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:

Mlib/pleroma/web/activity_pub/publisher.ex15++++++---------
Mtest/pleroma/web/activity_pub/publisher_test.exs38++++++++++++++++++--------------------
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