CommonFixes, Transmogrifier: Fix tests.

This commit is contained in:
Lain Soykaf 2025-12-21 15:19:38 +04:00
commit ec58b6a4cc
2 changed files with 9 additions and 5 deletions

View file

@ -20,13 +20,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do
require Pleroma.Constants require Pleroma.Constants
def cast_and_filter_recipients(message, field, follower_collection, field_fallback \\ []) do 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 # Fix as:Public/Public before ObjectID casting drops it, but keep `field_fallback`
message = # semantics (only used when the field is missing).
message recipients =
%{field => message[field] || field_fallback}
|> Transmogrifier.fix_addressing_list(field) |> Transmogrifier.fix_addressing_list(field)
|> Transmogrifier.fix_addressing_public(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 = data =
Enum.reject(data, fn x -> Enum.reject(data, fn x ->

View file

@ -109,10 +109,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
https://codeberg.org/bovine/bovine/issues/53 https://codeberg.org/bovine/bovine/issues/53
""" """
def fix_addressing_public(map, field) do def fix_addressing_public(map, field) do
addrs = Map.get(map, field, []) |> List.wrap()
Map.put( Map.put(
map, map,
field, field,
Enum.map(Map.get(map, field), fn Enum.map(addrs, fn
"Public" -> Pleroma.Constants.as_public() "Public" -> Pleroma.Constants.as_public()
"as:Public" -> Pleroma.Constants.as_public() "as:Public" -> Pleroma.Constants.as_public()
x -> x x -> x