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