@@ -101,8 +101,8 @@ config :pleroma, :config_description, [ | |||||
%{ | %{ | ||||
key: :versions, | key: :versions, | ||||
type: {:list, :atom}, | type: {:list, :atom}, | ||||
descriptions: "List of TLS version to use", | |||||
suggestions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"] | |||||
description: "List of TLS version to use", | |||||
suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"] | |||||
} | } | ||||
] | ] | ||||
} | } | ||||
@@ -1509,8 +1509,8 @@ config :pleroma, :config_description, [ | |||||
%{ | %{ | ||||
key: :versions, | key: :versions, | ||||
type: {:list, :atom}, | type: {:list, :atom}, | ||||
descriptions: "List of TLS version to use", | |||||
suggestions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"] | |||||
description: "List of TLS version to use", | |||||
suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"] | |||||
} | } | ||||
] | ] | ||||
} | } | ||||
@@ -2820,8 +2820,8 @@ config :pleroma, :config_description, [ | |||||
%{ | %{ | ||||
key: :versions, | key: :versions, | ||||
type: {:list, :atom}, | type: {:list, :atom}, | ||||
descriptions: "List of TLS version to use", | |||||
suggestions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"] | |||||
description: "List of TLS version to use", | |||||
suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"] | |||||
} | } | ||||
] | ] | ||||
} | } | ||||
@@ -183,6 +183,11 @@ defmodule Pleroma.Web.AdminAPI.Config do | |||||
defp do_convert(entity) when is_boolean(entity) or is_number(entity) or is_nil(entity), | defp do_convert(entity) when is_boolean(entity) or is_number(entity) or is_nil(entity), | ||||
do: entity | do: entity | ||||
defp do_convert(entity) | |||||
when is_atom(entity) and entity in [:"tlsv1.1", :"tlsv1.2", :"tlsv1.3"] do | |||||
":#{to_string(entity)}" | |||||
end | |||||
defp do_convert(entity) when is_atom(entity), do: inspect(entity) | defp do_convert(entity) when is_atom(entity), do: inspect(entity) | ||||
defp do_convert(entity) when is_binary(entity), do: entity | defp do_convert(entity) when is_binary(entity), do: entity | ||||
@@ -85,6 +85,12 @@ defmodule Pleroma.Docs.GeneratorTest do | |||||
key: "application/xml", | key: "application/xml", | ||||
type: {:list, :string}, | type: {:list, :string}, | ||||
suggestions: ["xml"] | suggestions: ["xml"] | ||||
}, | |||||
%{ | |||||
key: :versions, | |||||
type: {:list, :atom}, | |||||
description: "List of TLS version to use", | |||||
suggestions: [:tlsv1, ":tlsv1.1", ":tlsv1.2"] | |||||
} | } | ||||
] | ] | ||||
}, | }, | ||||
@@ -208,6 +214,12 @@ defmodule Pleroma.Docs.GeneratorTest do | |||||
assert child[:key] == "application/xml" | assert child[:key] == "application/xml" | ||||
end | end | ||||
test "suggestion for tls versions" do | |||||
[%{children: children} | _] = Generator.convert_to_strings(@descriptions) | |||||
child = Enum.at(children, 8) | |||||
assert child[:suggestions] == [":tlsv1", ":tlsv1.1", ":tlsv1.2"] | |||||
end | |||||
test "subgroup with module name" do | test "subgroup with module name" do | ||||
[%{children: children} | _] = Generator.convert_to_strings(@descriptions) | [%{children: children} | _] = Generator.convert_to_strings(@descriptions) | ||||
@@ -2204,6 +2204,47 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do | |||||
} | } | ||||
end | end | ||||
test "saving special atoms", %{conn: conn} do | |||||
conn = | |||||
post(conn, "/api/pleroma/admin/config", %{ | |||||
"configs" => [ | |||||
%{ | |||||
"group" => ":pleroma", | |||||
"key" => ":key1", | |||||
"value" => [ | |||||
%{ | |||||
"tuple" => [ | |||||
":ssl_options", | |||||
[%{"tuple" => [":versions", [":tlsv1", ":tlsv1.1", ":tlsv1.2"]]}] | |||||
] | |||||
} | |||||
] | |||||
} | |||||
] | |||||
}) | |||||
assert json_response(conn, 200) == %{ | |||||
"configs" => [ | |||||
%{ | |||||
"group" => ":pleroma", | |||||
"key" => ":key1", | |||||
"value" => [ | |||||
%{ | |||||
"tuple" => [ | |||||
":ssl_options", | |||||
[%{"tuple" => [":versions", [":tlsv1", ":tlsv1.1", ":tlsv1.2"]]}] | |||||
] | |||||
} | |||||
] | |||||
} | |||||
] | |||||
} | |||||
assert Application.get_env(:pleroma, :key1) == [ | |||||
ssl_options: [versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"]] | |||||
] | |||||
end | |||||
test "saving full setting if value is in full_key_update list", %{conn: conn} do | test "saving full setting if value is in full_key_update list", %{conn: conn} do | ||||
backends = Application.get_env(:logger, :backends) | backends = Application.get_env(:logger, :backends) | ||||
on_exit(fn -> Application.put_env(:logger, :backends, backends) end) | on_exit(fn -> Application.put_env(:logger, :backends, backends) end) | ||||
@@ -151,6 +151,12 @@ defmodule Pleroma.Web.AdminAPI.ConfigTest do | |||||
assert Config.from_binary(binary) == :atom | assert Config.from_binary(binary) == :atom | ||||
end | end | ||||
test "ssl options" do | |||||
binary = Config.transform([":tlsv1", ":tlsv1.1", ":tlsv1.2"]) | |||||
assert binary == :erlang.term_to_binary([:tlsv1, :"tlsv1.1", :"tlsv1.2"]) | |||||
assert Config.from_binary(binary) == [:tlsv1, :"tlsv1.1", :"tlsv1.2"] | |||||
end | |||||
test "pleroma module" do | test "pleroma module" do | ||||
binary = Config.transform("Pleroma.Bookmark") | binary = Config.transform("Pleroma.Bookmark") | ||||
assert binary == :erlang.term_to_binary(Pleroma.Bookmark) | assert binary == :erlang.term_to_binary(Pleroma.Bookmark) | ||||