Add tests and fix a typo in docs
This commit is contained in:
parent
38ff9b3568
commit
9a23f8f3ea
|
@ -174,7 +174,7 @@ This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:i
|
||||||
## :mrf_keyword
|
## :mrf_keyword
|
||||||
* `reject`: A list of patterns which result in message being rejected, each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html)
|
* `reject`: A list of patterns which result in message being rejected, each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html)
|
||||||
* `federated_timeline_removal`: A list of patterns which result in message being removed from federated timelines (a.k.a unlisted), each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html)
|
* `federated_timeline_removal`: A list of patterns which result in message being removed from federated timelines (a.k.a unlisted), each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html)
|
||||||
* `replace`: A list of tuples containing `{pattern, replacement`, `pattern` can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html)
|
* `replace`: A list of tuples containing `{pattern, replacement}`, `pattern` can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html)
|
||||||
|
|
||||||
## :media_proxy
|
## :media_proxy
|
||||||
* `enabled`: Enables proxying of remote media to the instance’s proxy
|
* `enabled`: Enables proxying of remote media to the instance’s proxy
|
||||||
|
|
113
test/web/activity_pub/mrf/keyword_policy_test.exs
Normal file
113
test/web/activity_pub/mrf/keyword_policy_test.exs
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2019 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicyTest do
|
||||||
|
use Pleroma.DataCase
|
||||||
|
|
||||||
|
alias Pleroma.Web.ActivityPub.MRF.KeywordPolicy
|
||||||
|
|
||||||
|
setup do
|
||||||
|
Pleroma.Config.put([:mrf_keyword], %{reject: [], federated_timeline_removal: [], replace: []})
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "rejecting based on keywords" do
|
||||||
|
test "rejects if string matches" do
|
||||||
|
Pleroma.Config.put([:mrf_keyword, :reject], ["pun"])
|
||||||
|
|
||||||
|
message = %{
|
||||||
|
"type" => "Create",
|
||||||
|
"object" => %{"content" => "just a daily reminder that compLAINer is a good pun"}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert {:reject, nil} == KeywordPolicy.filter(message)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "rejects if regex matches" do
|
||||||
|
Pleroma.Config.put([:mrf_keyword, :reject], [~r/comp[lL][aA][iI][nN]er/])
|
||||||
|
|
||||||
|
assert true ==
|
||||||
|
Enum.all?(["complainer", "compLainer", "compLAiNer", "compLAINer"], fn content ->
|
||||||
|
message = %{
|
||||||
|
"type" => "Create",
|
||||||
|
"object" => %{
|
||||||
|
"content" => "just a daily reminder that #{content} is a good pun"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{:reject, nil} == KeywordPolicy.filter(message)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "delisting from ftl based on keywords" do
|
||||||
|
test "delists if string matches" do
|
||||||
|
Pleroma.Config.put([:mrf_keyword, :federated_timeline_removal], ["pun"])
|
||||||
|
|
||||||
|
message = %{
|
||||||
|
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||||
|
"type" => "Create",
|
||||||
|
"object" => %{"content" => "just a daily reminder that compLAINer is a good pun"}
|
||||||
|
}
|
||||||
|
|
||||||
|
{:ok, result} = KeywordPolicy.filter(message)
|
||||||
|
assert ["https://www.w3.org/ns/activitystreams#Public"] == result["cc"]
|
||||||
|
refute ["https://www.w3.org/ns/activitystreams#Public"] == result["to"]
|
||||||
|
end
|
||||||
|
|
||||||
|
test "delists if regex matches" do
|
||||||
|
Pleroma.Config.put([:mrf_keyword, :federated_timeline_removal], [~r/comp[lL][aA][iI][nN]er/])
|
||||||
|
|
||||||
|
assert true ==
|
||||||
|
Enum.all?(["complainer", "compLainer", "compLAiNer", "compLAINer"], fn content ->
|
||||||
|
message = %{
|
||||||
|
"type" => "Create",
|
||||||
|
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||||
|
"object" => %{
|
||||||
|
"content" => "just a daily reminder that #{content} is a good pun"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{:ok, result} = KeywordPolicy.filter(message)
|
||||||
|
|
||||||
|
["https://www.w3.org/ns/activitystreams#Public"] == result["cc"] and
|
||||||
|
not (["https://www.w3.org/ns/activitystreams#Public"] == result["to"])
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "replacing keywords" do
|
||||||
|
test "replaces keyword if string matches" do
|
||||||
|
Pleroma.Config.put([:mrf_keyword, :replace], [{"opensource", "free software"}])
|
||||||
|
|
||||||
|
message = %{
|
||||||
|
"type" => "Create",
|
||||||
|
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||||
|
"object" => %{"content" => "ZFS is opensource"}
|
||||||
|
}
|
||||||
|
|
||||||
|
{:ok, %{"object" => %{"content" => result}}} = KeywordPolicy.filter(message)
|
||||||
|
assert result == "ZFS is free software"
|
||||||
|
end
|
||||||
|
|
||||||
|
test "replaces keyword if regex matches" do
|
||||||
|
Pleroma.Config.put([:mrf_keyword, :replace], [
|
||||||
|
{~r/open(-|\s)?source\s?(software)?/, "free software"}
|
||||||
|
])
|
||||||
|
|
||||||
|
assert true ==
|
||||||
|
Enum.all?(["opensource", "open-source", "open source"], fn content ->
|
||||||
|
message = %{
|
||||||
|
"type" => "Create",
|
||||||
|
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||||
|
"object" => %{"content" => "ZFS is #{content}"}
|
||||||
|
}
|
||||||
|
|
||||||
|
{:ok, %{"object" => %{"content" => result}}} = KeywordPolicy.filter(message)
|
||||||
|
IO.inspect(content)
|
||||||
|
IO.inspect(result)
|
||||||
|
result == "ZFS is free software"
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue