Browse Source

Transmogrifier: filtering weirdness in address fields

chores/our-libs-hex-releases
= bird 4 years ago
parent
commit
b221b640a2
2 changed files with 30 additions and 5 deletions
  1. +7
    -5
      lib/pleroma/web/activity_pub/transmogrifier.ex
  2. +23
    -0
      test/web/activity_pub/transmogrifier_test.exs

+ 7
- 5
lib/pleroma/web/activity_pub/transmogrifier.ex View File

@@ -62,15 +62,17 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def fix_summary(object), do: Map.put(object, "summary", "")

def fix_addressing_list(map, field) do
addrs = map[field]

cond do
is_binary(map[field]) ->
Map.put(map, field, [map[field]])
is_list(addrs) ->
Map.put(map, field, Enum.filter(addrs, &is_binary/1))

is_nil(map[field]) ->
Map.put(map, field, [])
is_binary(addrs) ->
Map.put(map, field, [addrs])

true ->
map
Map.put(map, field, [])
end
end



+ 23
- 0
test/web/activity_pub/transmogrifier_test.exs View File

@@ -774,6 +774,29 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
assert [user.follower_address] == activity.data["to"]
end

test "it correctly processes messages with weirdness in address fields" do
user = insert(:user)

message = %{
"@context" => "https://www.w3.org/ns/activitystreams",
"to" => [nil, user.follower_address],
"cc" => ["https://www.w3.org/ns/activitystreams#Public", ["¿"]],
"type" => "Create",
"object" => %{
"content" => "…",
"type" => "Note",
"attributedTo" => user.ap_id,
"inReplyTo" => nil
},
"actor" => user.ap_id
}

assert {:ok, activity} = Transmogrifier.handle_incoming(message)

assert ["https://www.w3.org/ns/activitystreams#Public"] == activity.data["cc"]
assert [user.follower_address] == activity.data["to"]
end

test "it accepts Move activities" do
old_user = insert(:user)
new_user = insert(:user)


Loading…
Cancel
Save