67 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
| # Pleroma: A lightweight social networking server
 | |
| # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
 | |
| # SPDX-License-Identifier: AGPL-3.0-only
 | |
| 
 | |
| defmodule Mix.Tasks.Pleroma.ConfigTest do
 | |
|   use Pleroma.DataCase
 | |
|   alias Pleroma.Repo
 | |
|   alias Pleroma.Web.AdminAPI.Config
 | |
| 
 | |
|   setup_all do
 | |
|     Mix.shell(Mix.Shell.Process)
 | |
|     temp_file = "config/temp.exported_from_db.secret.exs"
 | |
| 
 | |
|     dynamic = Pleroma.Config.get([:instance, :dynamic_configuration])
 | |
| 
 | |
|     Pleroma.Config.put([:instance, :dynamic_configuration], true)
 | |
| 
 | |
|     on_exit(fn ->
 | |
|       Mix.shell(Mix.Shell.IO)
 | |
|       Application.delete_env(:pleroma, :first_setting)
 | |
|       Application.delete_env(:pleroma, :second_setting)
 | |
|       Pleroma.Config.put([:instance, :dynamic_configuration], dynamic)
 | |
|       :ok = File.rm(temp_file)
 | |
|     end)
 | |
| 
 | |
|     {:ok, temp_file: temp_file}
 | |
|   end
 | |
| 
 | |
|   test "settings are migrated to db" do
 | |
|     assert Repo.all(Config) == []
 | |
| 
 | |
|     Application.put_env(:pleroma, :first_setting, key: "value", key2: [Pleroma.Repo])
 | |
|     Application.put_env(:pleroma, :second_setting, key: "value2", key2: [Pleroma.Activity])
 | |
| 
 | |
|     Mix.Tasks.Pleroma.Config.run(["migrate_to_db"])
 | |
| 
 | |
|     first_db = Config.get_by_params(%{group: "pleroma", key: ":first_setting"})
 | |
|     second_db = Config.get_by_params(%{group: "pleroma", key: ":second_setting"})
 | |
|     refute Config.get_by_params(%{group: "pleroma", key: "Pleroma.Repo"})
 | |
| 
 | |
|     assert Config.from_binary(first_db.value) == [key: "value", key2: [Pleroma.Repo]]
 | |
|     assert Config.from_binary(second_db.value) == [key: "value2", key2: [Pleroma.Activity]]
 | |
|   end
 | |
| 
 | |
|   test "settings are migrated to file and deleted from db", %{temp_file: temp_file} do
 | |
|     Config.create(%{
 | |
|       group: "pleroma",
 | |
|       key: ":setting_first",
 | |
|       value: [key: "value", key2: [Pleroma.Activity]]
 | |
|     })
 | |
| 
 | |
|     Config.create(%{
 | |
|       group: "pleroma",
 | |
|       key: ":setting_second",
 | |
|       value: [key: "valu2", key2: [Pleroma.Repo]]
 | |
|     })
 | |
| 
 | |
|     Mix.Tasks.Pleroma.Config.run(["migrate_from_db", "temp", "true"])
 | |
| 
 | |
|     assert Repo.all(Config) == []
 | |
|     assert File.exists?(temp_file)
 | |
|     {:ok, file} = File.read(temp_file)
 | |
| 
 | |
|     assert file =~ "config :pleroma, :setting_first,"
 | |
|     assert file =~ "config :pleroma, :setting_second,"
 | |
|   end
 | |
| end
 | 
