Просмотр исходного кода

Transmogrifier: Use a simpler way to get mentions.

fix/http_secury_plug
lain 4 лет назад
Родитель
Сommit
6bd7070b00
2 измененных файлов: 26 добавлений и 17 удалений
  1. +7
    -3
      lib/pleroma/web/activity_pub/transmogrifier.ex
  2. +19
    -14
      test/web/activity_pub/transmogrifier_test.exs

+ 7
- 3
lib/pleroma/web/activity_pub/transmogrifier.ex Просмотреть файл

@@ -1045,10 +1045,14 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
Map.put(object, "tag", tags)
end

# TODO These should be added on our side on insertion, it doesn't make much
# sense to regenerate these all the time
def add_mention_tags(object) do
{enabled_receivers, disabled_receivers} = Utils.get_notified_from_object(object)
potential_receivers = enabled_receivers ++ disabled_receivers
mentions = Enum.map(potential_receivers, &build_mention_tag/1)
to = object["to"] || []
cc = object["cc"] || []
mentioned = User.get_users_from_set(to ++ cc, local_only: false)

mentions = Enum.map(mentioned, &build_mention_tag/1)

tags = object["tag"] || []
Map.put(object, "tag", tags ++ mentions)


+ 19
- 14
test/web/activity_pub/transmogrifier_test.exs Просмотреть файл

@@ -1094,23 +1094,28 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
{:ok, activity} =
CommonAPI.post(user, %{status: "hey, @#{other_user.nickname}, how are ya? #2hu"})

{:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
object = modified["object"]
with_mock Pleroma.Notification,
get_notified_from_activity: fn _, _ -> [] end do
{:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)

expected_mention = %{
"href" => other_user.ap_id,
"name" => "@#{other_user.nickname}",
"type" => "Mention"
}
object = modified["object"]

expected_tag = %{
"href" => Pleroma.Web.Endpoint.url() <> "/tags/2hu",
"type" => "Hashtag",
"name" => "#2hu"
}
expected_mention = %{
"href" => other_user.ap_id,
"name" => "@#{other_user.nickname}",
"type" => "Mention"
}

assert Enum.member?(object["tag"], expected_tag)
assert Enum.member?(object["tag"], expected_mention)
expected_tag = %{
"href" => Pleroma.Web.Endpoint.url() <> "/tags/2hu",
"type" => "Hashtag",
"name" => "#2hu"
}

refute called(Pleroma.Notification.get_notified_from_activity(:_, :_))
assert Enum.member?(object["tag"], expected_tag)
assert Enum.member?(object["tag"], expected_mention)
end
end

test "it adds the sensitive property" do


Загрузка…
Отмена
Сохранить