commit: ec58b6a4cc40be5f69d21c8262c26504c11a9b60
parent 4496dc81c4e6bccf88eb4f0397e8a7c65a8cf17a
Author: Lain Soykaf <lain@lain.com>
Date: Sun, 21 Dec 2025 15:19:38 +0400
CommonFixes, Transmogrifier: Fix tests.
Diffstat:
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex
@@ -20,13 +20,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do
require Pleroma.Constants
def cast_and_filter_recipients(message, field, follower_collection, field_fallback \\ []) do
- # calling this here since we need to fix as:Public address before ObjectID cast throws it out
- message =
- message
+ # Fix as:Public/Public before ObjectID casting drops it, but keep `field_fallback`
+ # semantics (only used when the field is missing).
+ recipients =
+ %{field => message[field] || field_fallback}
|> Transmogrifier.fix_addressing_list(field)
|> Transmogrifier.fix_addressing_public(field)
+ |> Map.fetch!(field)
- {:ok, data} = ObjectValidators.Recipients.cast(message[field] || field_fallback)
+ {:ok, data} = ObjectValidators.Recipients.cast(recipients)
data =
Enum.reject(data, fn x ->
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -109,10 +109,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
https://codeberg.org/bovine/bovine/issues/53
"""
def fix_addressing_public(map, field) do
+ addrs = Map.get(map, field, []) |> List.wrap()
+
Map.put(
map,
field,
- Enum.map(Map.get(map, field), fn
+ Enum.map(addrs, fn
"Public" -> Pleroma.Constants.as_public()
"as:Public" -> Pleroma.Constants.as_public()
x -> x