forked from AkkomaGang/akkoma
Rebased from #103 Co-authored-by: Tusooa Zhu <tusooa@kazv.moe> Co-authored-by: FloatingGhost <hannah@coffee-and-dreams.uk> Reviewed-on: AkkomaGang/akkoma#202
101 lines
2.5 KiB
Elixir
101 lines
2.5 KiB
Elixir
# Pleroma: A lightweight social networking server
|
|
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
defmodule Pleroma.Web.ActivityPub.MRF.HashtagPolicyTest do
|
|
use Oban.Testing, repo: Pleroma.Repo
|
|
use Pleroma.DataCase
|
|
|
|
alias Pleroma.Web.ActivityPub.Transmogrifier
|
|
alias Pleroma.Web.CommonAPI
|
|
|
|
import Pleroma.Factory
|
|
|
|
test "it sets the sensitive property with relevant hashtags" do
|
|
user = insert(:user)
|
|
|
|
{:ok, activity} = CommonAPI.post(user, %{status: "#nsfw hey"})
|
|
{:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
|
|
|
|
assert modified["object"]["sensitive"]
|
|
end
|
|
|
|
test "it is history-aware" do
|
|
activity = %{
|
|
"type" => "Create",
|
|
"object" => %{
|
|
"content" => "hey",
|
|
"tag" => []
|
|
}
|
|
}
|
|
|
|
activity_data =
|
|
activity
|
|
|> put_in(
|
|
["object", "formerRepresentations"],
|
|
%{
|
|
"type" => "OrderedCollection",
|
|
"orderedItems" => [
|
|
Map.put(
|
|
activity["object"],
|
|
"tag",
|
|
[%{"type" => "Hashtag", "name" => "#nsfw"}]
|
|
)
|
|
]
|
|
}
|
|
)
|
|
|
|
{:ok, modified} =
|
|
Pleroma.Web.ActivityPub.MRF.filter_one(
|
|
Pleroma.Web.ActivityPub.MRF.HashtagPolicy,
|
|
activity_data
|
|
)
|
|
|
|
refute modified["object"]["sensitive"]
|
|
assert Enum.at(modified["object"]["formerRepresentations"]["orderedItems"], 0)["sensitive"]
|
|
end
|
|
|
|
test "it works with Update" do
|
|
activity = %{
|
|
"type" => "Update",
|
|
"object" => %{
|
|
"content" => "hey",
|
|
"tag" => []
|
|
}
|
|
}
|
|
|
|
activity_data =
|
|
activity
|
|
|> put_in(
|
|
["object", "formerRepresentations"],
|
|
%{
|
|
"type" => "OrderedCollection",
|
|
"orderedItems" => [
|
|
Map.put(
|
|
activity["object"],
|
|
"tag",
|
|
[%{"type" => "Hashtag", "name" => "#nsfw"}]
|
|
)
|
|
]
|
|
}
|
|
)
|
|
|
|
{:ok, modified} =
|
|
Pleroma.Web.ActivityPub.MRF.filter_one(
|
|
Pleroma.Web.ActivityPub.MRF.HashtagPolicy,
|
|
activity_data
|
|
)
|
|
|
|
refute modified["object"]["sensitive"]
|
|
assert Enum.at(modified["object"]["formerRepresentations"]["orderedItems"], 0)["sensitive"]
|
|
end
|
|
|
|
test "it doesn't sets the sensitive property with irrelevant hashtags" do
|
|
user = insert(:user)
|
|
|
|
{:ok, activity} = CommonAPI.post(user, %{status: "#cofe hey"})
|
|
{:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
|
|
|
|
refute modified["object"]["sensitive"]
|
|
end
|
|
end
|