Fix regex breaking listing in admin api and add a test for it
This commit is contained in:
parent
594f8dca20
commit
56013408e0
|
@ -100,33 +100,25 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicy do
|
|||
end
|
||||
end
|
||||
|
||||
def list_keyword_policy, do: Pleroma.Config.get(:mrf_keyword)
|
||||
|
||||
def nodeinfo_keyword_policy do
|
||||
def list_keyword_policy do
|
||||
Pleroma.Config.get(:mrf_keyword, [])
|
||||
|> Enum.map(fn {key, value} ->
|
||||
{key,
|
||||
Enum.map(value, fn
|
||||
{pattern, replacement} ->
|
||||
%{
|
||||
"pattern" =>
|
||||
if not is_binary(pattern) do
|
||||
inspect(pattern)
|
||||
else
|
||||
pattern
|
||||
end,
|
||||
"replacement" => replacement
|
||||
}
|
||||
|> Enum.reduce(%{}, fn {key, value}, acc ->
|
||||
base = if is_map(value), do: %{}, else: []
|
||||
|
||||
pattern ->
|
||||
if not is_binary(pattern) do
|
||||
inspect(pattern)
|
||||
else
|
||||
pattern
|
||||
end
|
||||
end)}
|
||||
value =
|
||||
Enum.reduce(value, base, fn
|
||||
{pattern, replacement}, acc ->
|
||||
pattern = unless is_binary(pattern), do: inspect(pattern), else: pattern
|
||||
Map.put(acc, pattern, replacement)
|
||||
|
||||
pattern, acc ->
|
||||
pattern = unless is_binary(pattern), do: inspect(pattern), else: pattern
|
||||
|
||||
acc ++ [pattern]
|
||||
end)
|
||||
|
||||
Map.put(acc, key, value)
|
||||
end)
|
||||
|> Enum.into(%{})
|
||||
end
|
||||
|
||||
@impl true
|
||||
|
|
|
@ -45,7 +45,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
|
|||
Application.get_env(:pleroma, :mrf_simple)
|
||||
|> Enum.into(%{})
|
||||
|
||||
mrf_keyword = KeywordPolicy.nodeinfo_keyword_policy()
|
||||
mrf_keyword = KeywordPolicy.list_keyword_policy()
|
||||
|
||||
mrf_policies =
|
||||
MRF.get_policies()
|
||||
|
|
|
@ -596,4 +596,27 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
|
|||
"tags" => []
|
||||
}
|
||||
end
|
||||
|
||||
describe "KeywordPolicy" do
|
||||
test "GET /api/pleroma/admin/mrf/keyword_policy/list" do
|
||||
Pleroma.Config.put([:mrf_keyword], %{
|
||||
reject: [~r/(rof)?lmao/, "yikes!"],
|
||||
federated_timeline_removal: ["umm spaghetti", ~r/[OoUu]w[OoUu]/],
|
||||
replace: %{~r/bloat(ed)?/ => "\\0 :rokalife:", "karen" => "kawen"}
|
||||
})
|
||||
|
||||
admin = insert(:user, info: %{is_admin: true})
|
||||
|
||||
conn =
|
||||
build_conn()
|
||||
|> assign(:user, admin)
|
||||
|> get("/api/pleroma/admin/mrf/keyword_policy/list")
|
||||
|
||||
assert json_response(conn, 200) == %{
|
||||
"federated_timeline_removal" => ["umm spaghetti", "~r/[OoUu]w[OoUu]/"],
|
||||
"reject" => ["~r/(rof)?lmao/", "yikes!"],
|
||||
"replace" => %{"karen" => "kawen", "~r/bloat(ed)?/" => "\\0 :rokalife:"}
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue