diff --git a/lib/pleroma/web/admin_api/config.ex b/lib/pleroma/web/admin_api/config.ex index a8a698c89..ef658e079 100644 --- a/lib/pleroma/web/admin_api/config.ex +++ b/lib/pleroma/web/admin_api/config.ex @@ -295,7 +295,8 @@ defp do_transform_string(value) do @spec is_module_name?(String.t()) :: boolean() def is_module_name?(string) do - Regex.match?(~r/^(Pleroma|Phoenix|Tesla)\./, string) or string in ["Oban", "Ueberauth"] + Regex.match?(~r/^(Pleroma|Phoenix|Tesla|Quack)\./, string) or + string in ["Oban", "Ueberauth", "ExSyslogger"] end defp do_eval(entity) do diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 56a3a3a97..ea3c43158 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -2218,7 +2218,11 @@ test "saving full setting if value is in full_key_update list", %{conn: conn} do conn = post(conn, "/api/pleroma/admin/config", %{ configs: [ - %{group: config.group, key: config.key, value: [":console"]} + %{ + group: config.group, + key: config.key, + value: [":console", %{"tuple" => ["ExSyslogger", ":ex_syslogger"]}] + } ] }) @@ -2227,12 +2231,18 @@ test "saving full setting if value is in full_key_update list", %{conn: conn} do %{ "group" => ":logger", "key" => ":backends", - "value" => [":console"] + "value" => [ + ":console", + %{"tuple" => ["ExSyslogger", ":ex_syslogger"]} + ] } ] } - assert Application.get_env(:logger, :backends) == [:console] + assert Application.get_env(:logger, :backends) == [ + :console, + {ExSyslogger, :ex_syslogger} + ] ExUnit.CaptureLog.capture_log(fn -> require Logger diff --git a/test/web/admin_api/config_test.exs b/test/web/admin_api/config_test.exs index b8b1b0130..4f96322af 100644 --- a/test/web/admin_api/config_test.exs +++ b/test/web/admin_api/config_test.exs @@ -175,6 +175,18 @@ test "tesla module" do assert Config.from_binary(binary) == Tesla.Adapter.Hackney end + test "ExSyslogger module" do + binary = Config.transform("ExSyslogger") + assert binary == :erlang.term_to_binary(ExSyslogger) + assert Config.from_binary(binary) == ExSyslogger + end + + test "Quack.Logger module" do + binary = Config.transform("Quack.Logger") + assert binary == :erlang.term_to_binary(Quack.Logger) + assert Config.from_binary(binary) == Quack.Logger + end + test "sigil" do binary = Config.transform("~r[comp[lL][aA][iI][nN]er]") assert binary == :erlang.term_to_binary(~r/comp[lL][aA][iI][nN]er/)