First
[anni] / test / pleroma / config / release_runtime_provider_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Config.ReleaseRuntimeProviderTest do
6   use ExUnit.Case, async: true
7
8   alias Pleroma.Config.ReleaseRuntimeProvider
9
10   describe "load/2" do
11     test "loads release defaults config and warns about non-existent runtime config" do
12       ExUnit.CaptureIO.capture_io(fn ->
13         merged = ReleaseRuntimeProvider.load([], [])
14         assert merged == Pleroma.Config.Holder.release_defaults()
15       end) =~
16         "!!! Config path is not declared! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file"
17     end
18
19     test "merged runtime config" do
20       assert :ok == File.chmod!("test/fixtures/config/temp.secret.exs", 0o640)
21
22       merged =
23         ReleaseRuntimeProvider.load([], config_path: "test/fixtures/config/temp.secret.exs")
24
25       assert merged[:pleroma][:first_setting] == [key: "value", key2: [Pleroma.Repo]]
26       assert merged[:pleroma][:second_setting] == [key: "value2", key2: ["Activity"]]
27     end
28
29     test "merged exported config" do
30       assert :ok == File.chmod!("test/fixtures/config/temp.exported_from_db.secret.exs", 0o640)
31
32       ExUnit.CaptureIO.capture_io(fn ->
33         merged =
34           ReleaseRuntimeProvider.load([],
35             exported_config_path: "test/fixtures/config/temp.exported_from_db.secret.exs"
36           )
37
38         assert merged[:pleroma][:exported_config_merged]
39       end) =~
40         "!!! Config path is not declared! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file"
41     end
42
43     test "runtime config is merged with exported config" do
44       assert :ok == File.chmod!("test/fixtures/config/temp.secret.exs", 0o640)
45       assert :ok == File.chmod!("test/fixtures/config/temp.exported_from_db.secret.exs", 0o640)
46
47       merged =
48         ReleaseRuntimeProvider.load([],
49           config_path: "test/fixtures/config/temp.secret.exs",
50           exported_config_path: "test/fixtures/config/temp.exported_from_db.secret.exs"
51         )
52
53       assert merged[:pleroma][:first_setting] == [key2: [Pleroma.Repo], key: "new value"]
54     end
55   end
56 end