parent
503d966e9f
commit
f01ab6cd29
@ -1,29 +1,16 @@
|
|||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Config.Holder do
|
defmodule Pleroma.Config.Holder do
|
||||||
@config Pleroma.Config.Loader.load_and_merge()
|
@config Pleroma.Config.Loader.load_and_merge()
|
||||||
|
|
||||||
@spec config() :: keyword()
|
@spec config() :: keyword()
|
||||||
def config do
|
def config, do: @config
|
||||||
@config
|
|
||||||
|> Keyword.keys()
|
|
||||||
|> Enum.map(&filter(&1, config(&1)))
|
|
||||||
|> List.flatten()
|
|
||||||
end
|
|
||||||
|
|
||||||
@spec config(atom()) :: any()
|
@spec config(atom()) :: any()
|
||||||
def config(group), do: @config[group]
|
def config(group), do: @config[group]
|
||||||
|
|
||||||
@spec config(atom(), atom()) :: any()
|
@spec config(atom(), atom()) :: any()
|
||||||
def config(group, key), do: @config[group][key]
|
def config(group, key), do: @config[group][key]
|
||||||
|
|
||||||
defp filter(group, settings) when group not in [:swarm] do
|
|
||||||
filtered =
|
|
||||||
Enum.reject(settings, fn {k, _v} ->
|
|
||||||
k in [Pleroma.Repo, Pleroma.Web.Endpoint, :env, :configurable_from_database] or
|
|
||||||
(group == :phoenix and k == :serve_endpoints)
|
|
||||||
end)
|
|
||||||
|
|
||||||
{group, filtered}
|
|
||||||
end
|
|
||||||
|
|
||||||
defp filter(_, _), do: []
|
|
||||||
end
|
end
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Config.HolderTest do
|
||||||
|
use ExUnit.Case, async: true
|
||||||
|
|
||||||
|
alias Pleroma.Config.Holder
|
||||||
|
|
||||||
|
test "config/0" do
|
||||||
|
config = Holder.config()
|
||||||
|
assert config[:pleroma][Pleroma.Uploaders.Local][:uploads] == "test/uploads"
|
||||||
|
assert config[:tesla][:adapter] == Tesla.Mock
|
||||||
|
|
||||||
|
refute config[:pleroma][Pleroma.Repo]
|
||||||
|
refute config[:pleroma][Pleroma.Web.Endpoint]
|
||||||
|
refute config[:pleroma][:env]
|
||||||
|
refute config[:pleroma][:configurable_from_database]
|
||||||
|
refute config[:pleroma][:database]
|
||||||
|
refute config[:phoenix][:serve_endpoints]
|
||||||
|
end
|
||||||
|
|
||||||
|
test "config/1" do
|
||||||
|
pleroma_config = Holder.config(:pleroma)
|
||||||
|
assert pleroma_config[Pleroma.Uploaders.Local][:uploads] == "test/uploads"
|
||||||
|
tesla_config = Holder.config(:tesla)
|
||||||
|
assert tesla_config[:adapter] == Tesla.Mock
|
||||||
|
end
|
||||||
|
|
||||||
|
test "config/2" do
|
||||||
|
assert Holder.config(:pleroma, Pleroma.Uploaders.Local) == [uploads: "test/uploads"]
|
||||||
|
assert Holder.config(:tesla, :adapter) == Tesla.Mock
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,44 @@
|
|||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Config.LoaderTest do
|
||||||
|
use ExUnit.Case, async: true
|
||||||
|
|
||||||
|
alias Pleroma.Config.Loader
|
||||||
|
|
||||||
|
test "load/1" do
|
||||||
|
config = Loader.load("test/fixtures/config/temp.secret.exs")
|
||||||
|
assert config[:pleroma][:first_setting][:key] == "value"
|
||||||
|
assert config[:pleroma][:first_setting][:key2] == [Pleroma.Repo]
|
||||||
|
assert config[:quack][:level] == :info
|
||||||
|
end
|
||||||
|
|
||||||
|
test "load_and_merge/0" do
|
||||||
|
config = Loader.load_and_merge()
|
||||||
|
|
||||||
|
refute config[:pleroma][Pleroma.Repo]
|
||||||
|
refute config[:pleroma][Pleroma.Web.Endpoint]
|
||||||
|
refute config[:pleroma][:env]
|
||||||
|
refute config[:pleroma][:configurable_from_database]
|
||||||
|
refute config[:pleroma][:database]
|
||||||
|
refute config[:phoenix][:serve_endpoints]
|
||||||
|
|
||||||
|
assert config[:pleroma][:ecto_repos] == [Pleroma.Repo]
|
||||||
|
assert config[:pleroma][Pleroma.Uploaders.Local][:uploads] == "test/uploads"
|
||||||
|
assert config[:tesla][:adapter] == Tesla.Mock
|
||||||
|
end
|
||||||
|
|
||||||
|
test "filter_group/2" do
|
||||||
|
assert Loader.filter_group(:pleroma,
|
||||||
|
pleroma: [
|
||||||
|
{Pleroma.Repo, [a: 1, b: 2]},
|
||||||
|
{Pleroma.Upload, [a: 1, b: 2]},
|
||||||
|
{Pleroma.Web.Endpoint, []},
|
||||||
|
env: :test,
|
||||||
|
configurable_from_database: true,
|
||||||
|
database: []
|
||||||
|
]
|
||||||
|
) == [{Pleroma.Upload, [a: 1, b: 2]}]
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in new issue