Merge branch 'bind-to-localhost' into 'develop'
[akkoma] / test / tasks / config_test.exs
1 defmodule Mix.Tasks.Pleroma.ConfigTest do
2 use Pleroma.DataCase
3 alias Pleroma.Repo
4 alias Pleroma.Web.AdminAPI.Config
5
6 setup_all do
7 Mix.shell(Mix.Shell.Process)
8 temp_file = "config/temp.exported_from_db.secret.exs"
9
10 dynamic = Pleroma.Config.get([:instance, :dynamic_configuration])
11
12 Pleroma.Config.put([:instance, :dynamic_configuration], true)
13
14 on_exit(fn ->
15 Mix.shell(Mix.Shell.IO)
16 Application.delete_env(:pleroma, :first_setting)
17 Application.delete_env(:pleroma, :second_setting)
18 Pleroma.Config.put([:instance, :dynamic_configuration], dynamic)
19 :ok = File.rm(temp_file)
20 end)
21
22 {:ok, temp_file: temp_file}
23 end
24
25 test "settings are migrated to db" do
26 assert Repo.all(Config) == []
27
28 Application.put_env(:pleroma, :first_setting, key: "value", key2: [Pleroma.Repo])
29 Application.put_env(:pleroma, :second_setting, key: "value2", key2: [Pleroma.Activity])
30
31 Mix.Tasks.Pleroma.Config.run(["migrate_to_db"])
32
33 first_db = Config.get_by_params(%{group: "pleroma", key: "first_setting"})
34 second_db = Config.get_by_params(%{group: "pleroma", key: "second_setting"})
35 refute Config.get_by_params(%{group: "pleroma", key: "Pleroma.Repo"})
36
37 assert Config.from_binary(first_db.value) == [key: "value", key2: [Pleroma.Repo]]
38 assert Config.from_binary(second_db.value) == [key: "value2", key2: [Pleroma.Activity]]
39 end
40
41 test "settings are migrated to file and deleted from db", %{temp_file: temp_file} do
42 Config.create(%{
43 group: "pleroma",
44 key: "setting_first",
45 value: [key: "value", key2: [Pleroma.Activity]]
46 })
47
48 Config.create(%{
49 group: "pleroma",
50 key: "setting_second",
51 value: [key: "valu2", key2: [Pleroma.Repo]]
52 })
53
54 Mix.Tasks.Pleroma.Config.run(["migrate_from_db", "temp"])
55
56 assert Repo.all(Config) == []
57 assert File.exists?(temp_file)
58 {:ok, file} = File.read(temp_file)
59
60 assert file =~ "config :pleroma, setting_first:"
61 assert file =~ "config :pleroma, setting_second:"
62 end
63 end