Make NoPlaceholderTextPolicy history-aware
This commit is contained in:
parent
dce7e42928
commit
fc7ce5f93c
|
@ -6,14 +6,17 @@ defmodule Pleroma.Web.ActivityPub.MRF.NoPlaceholderTextPolicy do
|
||||||
@moduledoc "Ensure no content placeholder is present (such as the dot from mastodon)"
|
@moduledoc "Ensure no content placeholder is present (such as the dot from mastodon)"
|
||||||
@behaviour Pleroma.Web.ActivityPub.MRF.Policy
|
@behaviour Pleroma.Web.ActivityPub.MRF.Policy
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def history_awareness, do: :auto
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def filter(
|
def filter(
|
||||||
%{
|
%{
|
||||||
"type" => "Create",
|
"type" => type,
|
||||||
"object" => %{"content" => content, "attachment" => _} = _child_object
|
"object" => %{"content" => content, "attachment" => _} = _child_object
|
||||||
} = object
|
} = object
|
||||||
)
|
)
|
||||||
when content in [".", "<p>.</p>"] do
|
when type in ["Create", "Update"] and content in [".", "<p>.</p>"] do
|
||||||
{:ok, put_in(object, ["object", "content"], "")}
|
{:ok, put_in(object, ["object", "content"], "")}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
defmodule Pleroma.Web.ActivityPub.MRF.NoPlaceholderTextPolicyTest do
|
defmodule Pleroma.Web.ActivityPub.MRF.NoPlaceholderTextPolicyTest do
|
||||||
use Pleroma.DataCase, async: true
|
use Pleroma.DataCase, async: true
|
||||||
|
alias Pleroma.Web.ActivityPub.MRF
|
||||||
alias Pleroma.Web.ActivityPub.MRF.NoPlaceholderTextPolicy
|
alias Pleroma.Web.ActivityPub.MRF.NoPlaceholderTextPolicy
|
||||||
|
|
||||||
test "it clears content object" do
|
test "it clears content object" do
|
||||||
|
@ -20,6 +21,46 @@ test "it clears content object" do
|
||||||
assert res["object"]["content"] == ""
|
assert res["object"]["content"] == ""
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "history-aware" do
|
||||||
|
message = %{
|
||||||
|
"type" => "Create",
|
||||||
|
"object" => %{
|
||||||
|
"content" => ".",
|
||||||
|
"attachment" => "image",
|
||||||
|
"formerRepresentations" => %{
|
||||||
|
"orderedItems" => [%{"content" => ".", "attachment" => "image"}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert {:ok, res} = MRF.filter_one(NoPlaceholderTextPolicy, message)
|
||||||
|
|
||||||
|
assert %{
|
||||||
|
"content" => "",
|
||||||
|
"formerRepresentations" => %{"orderedItems" => [%{"content" => ""}]}
|
||||||
|
} = res["object"]
|
||||||
|
end
|
||||||
|
|
||||||
|
test "works with Updates" do
|
||||||
|
message = %{
|
||||||
|
"type" => "Update",
|
||||||
|
"object" => %{
|
||||||
|
"content" => ".",
|
||||||
|
"attachment" => "image",
|
||||||
|
"formerRepresentations" => %{
|
||||||
|
"orderedItems" => [%{"content" => ".", "attachment" => "image"}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert {:ok, res} = MRF.filter_one(NoPlaceholderTextPolicy, message)
|
||||||
|
|
||||||
|
assert %{
|
||||||
|
"content" => "",
|
||||||
|
"formerRepresentations" => %{"orderedItems" => [%{"content" => ""}]}
|
||||||
|
} = res["object"]
|
||||||
|
end
|
||||||
|
|
||||||
@messages [
|
@messages [
|
||||||
%{
|
%{
|
||||||
"type" => "Create",
|
"type" => "Create",
|
||||||
|
|
Loading…
Reference in New Issue