aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/fixtures/config/temp.secret.exs26
-rw-r--r--test/pleroma/application/config_dependent_deps_test.exs149
-rw-r--r--test/pleroma/application/environment_test.exs243
-rw-r--r--test/pleroma/application/requirements_test.exs (renamed from test/pleroma/application_requirements_test.exs)59
-rw-r--r--test/pleroma/config/loader_test.exs41
-rw-r--r--test/pleroma/config/transfer_task_test.exs120
-rw-r--r--test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs29
-rw-r--r--test/pleroma/web/admin_api/controllers/config_controller_test.exs81
-rw-r--r--test/support/data_case.ex18
9 files changed, 521 insertions, 245 deletions
diff --git a/test/fixtures/config/temp.secret.exs b/test/fixtures/config/temp.secret.exs
index 4b3af39ec..ce93fad25 100644
--- a/test/fixtures/config/temp.secret.exs
+++ b/test/fixtures/config/temp.secret.exs
@@ -12,6 +12,30 @@ config :quack, level: :info
config :pleroma, Pleroma.Repo, pool: Ecto.Adapters.SQL.Sandbox
-config :postgrex, :json_library, Poison
+config :pleroma, Pleroma.Web.Endpoint, key: :val
+
+config :pleroma, Pleroma.InstallerWeb.Endpoint, key: :val
+
+config :pleroma, env: :test
config :pleroma, :database, rum_enabled: true
+
+config :pleroma, configurable_from_database: false
+
+config :pleroma, ecto_repos: [Pleroma.Repo]
+
+config :pleroma, Pleroma.Gun, Pleroma.GunMock
+
+config :pleroma, Pleroma.ReverseProxy.Client, Pleroma.ReverseProxy.Client
+
+config :postgrex, :json_library, Poison
+
+config :tesla, adapter: Tesla.Mock
+
+config :tzdata, http_client: Pleroma.HTTP
+
+config :http_signatures, key: :val
+
+config :web_push_encryption, key: :val
+
+config :floki, key: :val
diff --git a/test/pleroma/application/config_dependent_deps_test.exs b/test/pleroma/application/config_dependent_deps_test.exs
new file mode 100644
index 000000000..620da16d9
--- /dev/null
+++ b/test/pleroma/application/config_dependent_deps_test.exs
@@ -0,0 +1,149 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Application.ConfigDependentDepsTest do
+ use ExUnit.Case
+
+ alias Pleroma.Application.ConfigDependentDeps
+
+ setup do
+ {:ok, _} =
+ DynamicSupervisor.start_link(
+ strategy: :one_for_one,
+ name: Pleroma.Application.DynamicSupervisorTest
+ )
+
+ {:ok, pid} =
+ Pleroma.Application.ConfigDependentDeps.start_link(
+ dynamic_supervisor: Pleroma.Application.DynamicSupervisorTest,
+ name: Pleroma.Application.ConfigDependentDepsTesting,
+ relations: [
+ {{:pleroma, :dummy_module1}, Pleroma.DummyModule1},
+ {{:pleroma, :dummy_module2}, Pleroma.DummyModule2},
+ {:dummy_group1, :dummy_group1},
+ {:ex_aws, :ex_aws},
+ {:not_started_app, :not_started_app}
+ ]
+ )
+
+ [pid: pid]
+ end
+
+ test "start_dependency/2", %{pid: pid} do
+ {:ok, pid} = ConfigDependentDeps.start_dependency(Pleroma.DummyModule1, pid)
+ assert Process.alive?(pid)
+ end
+
+ describe "need_reboot?/1" do
+ test "apps and paths", %{pid: pid} do
+ changes = [
+ %Pleroma.ConfigDB{group: :dummy_group1},
+ %Pleroma.ConfigDB{group: :pleroma, key: :dummy_module1}
+ ]
+
+ assert ConfigDependentDeps.save_config_paths_for_restart(changes, pid) == [
+ {:pleroma, :dummy_module1},
+ :dummy_group1
+ ]
+
+ assert ConfigDependentDeps.need_reboot?(pid)
+ end
+
+ test "app and path are not duplicated", %{pid: pid} do
+ changes = [
+ %Pleroma.ConfigDB{group: :dummy_group1},
+ %Pleroma.ConfigDB{group: :dummy_group1},
+ %Pleroma.ConfigDB{group: :pleroma, key: :dummy_module1},
+ %Pleroma.ConfigDB{group: :pleroma, key: :dummy_module1}
+ ]
+
+ assert ConfigDependentDeps.save_config_paths_for_restart(changes, pid) == [
+ {:pleroma, :dummy_module1},
+ :dummy_group1
+ ]
+
+ assert ConfigDependentDeps.need_reboot?(pid)
+ end
+ end
+
+ describe "restart_dependencies/1" do
+ test "started dependency", %{pid: pid} do
+ {:ok, dummy_pid} = ConfigDependentDeps.start_dependency(Pleroma.DummyModule1, pid)
+
+ changes = [
+ %Pleroma.ConfigDB{group: :ex_aws},
+ %Pleroma.ConfigDB{group: :pleroma, key: :dummy_module1}
+ ]
+
+ assert ConfigDependentDeps.save_config_paths_for_restart(changes, pid) == [
+ {:pleroma, :dummy_module1},
+ :ex_aws
+ ]
+
+ assert :ok == ConfigDependentDeps.restart_dependencies(pid)
+
+ restarted = Process.whereis(Pleroma.DummyModule1)
+
+ refute dummy_pid == restarted
+ end
+
+ test "not started process and app", %{pid: pid} do
+ changes = [
+ %Pleroma.ConfigDB{group: :pleroma, key: :dummy_module1},
+ %Pleroma.ConfigDB{group: :not_started_app}
+ ]
+
+ assert ConfigDependentDeps.save_config_paths_for_restart(changes, pid) == [
+ :not_started_app,
+ {:pleroma, :dummy_module1}
+ ]
+
+ assert :ok == ConfigDependentDeps.restart_dependencies(pid)
+
+ started = Process.whereis(Pleroma.DummyModule1)
+
+ assert Process.alive?(started)
+ end
+
+ test "ignored dependency", %{pid: pid} do
+ changes = [
+ %Pleroma.ConfigDB{group: :pleroma, key: :dummy_module2}
+ ]
+
+ assert ConfigDependentDeps.save_config_paths_for_restart(changes, pid) == [
+ {:pleroma, :dummy_module2}
+ ]
+
+ assert :ok == ConfigDependentDeps.restart_dependencies(pid)
+
+ refute Process.whereis(Pleroma.DummyModule2)
+ end
+ end
+
+ test "process goes down", %{pid: pid} do
+ {:ok, dummy_pid} = ConfigDependentDeps.start_dependency(Pleroma.DummyModule1, pid)
+
+ Process.exit(dummy_pid, :kill)
+
+ Process.sleep(10)
+ restarted = Process.whereis(Pleroma.DummyModule1)
+ refute restarted == dummy_pid
+ end
+end
+
+defmodule Pleroma.DummyModule1 do
+ use Agent
+
+ def start_link(_) do
+ Agent.start_link(fn -> nil end, name: __MODULE__)
+ end
+end
+
+defmodule Pleroma.DummyModule2 do
+ use Agent
+
+ def start_link(_) do
+ :ignore
+ end
+end
diff --git a/test/pleroma/application/environment_test.exs b/test/pleroma/application/environment_test.exs
new file mode 100644
index 000000000..d7f9af5cf
--- /dev/null
+++ b/test/pleroma/application/environment_test.exs
@@ -0,0 +1,243 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Application.EnvironmentTest do
+ use Pleroma.DataCase
+
+ import Pleroma.Factory
+
+ alias Pleroma.Application.Environment
+
+ setup do: clear_config(:configurable_from_database, true)
+
+ describe "load_from_db_and_update/0" do
+ test "transfer config values from db to env" do
+ refute Application.get_env(:pleroma, :test_key)
+ refute Application.get_env(:idna, :test_key)
+ refute Application.get_env(:quack, :test_key)
+ refute Application.get_env(:postgrex, :test_key)
+ initial = Application.get_env(:logger, :level)
+
+ insert(:config, key: :test_key, value: [live: 2, com: 3])
+ insert(:config, group: :idna, key: :test_key, value: [live: 15, com: 35])
+
+ insert(:config,
+ group: :quack,
+ key: :test_key,
+ value: [key1: :test_value1, key2: :test_value2]
+ )
+
+ insert(:config, group: :logger, key: :level, value: :debug)
+
+ Environment.load_from_db_and_update()
+
+ assert Application.get_env(:pleroma, :test_key) == [live: 2, com: 3]
+ assert Application.get_env(:idna, :test_key) == [live: 15, com: 35]
+ assert Application.get_env(:quack, :test_key) == [key1: :test_value1, key2: :test_value2]
+ assert Application.get_env(:logger, :level) == :debug
+
+ on_exit(fn ->
+ Application.delete_env(:pleroma, :test_key)
+ Application.delete_env(:idna, :test_key)
+ Application.delete_env(:quack, :test_key)
+ Application.delete_env(:postgrex, :test_key)
+ Application.put_env(:logger, :level, initial)
+ end)
+ end
+
+ test "transfer config values for 1 group and some keys" do
+ quack_env = Application.get_all_env(:quack)
+
+ insert(:config, group: :quack, key: :level, value: :info)
+ insert(:config, group: :quack, key: :meta, value: [:none])
+
+ Environment.load_from_db_and_update()
+
+ assert Application.get_env(:quack, :level) == :info
+ assert Application.get_env(:quack, :meta) == [:none]
+ default = Pleroma.Config.Holder.default_config(:quack, :webhook_url)
+ assert Application.get_env(:quack, :webhook_url) == default
+
+ on_exit(fn ->
+ Application.put_all_env(quack: quack_env)
+ end)
+ end
+
+ test "transfer config values with full subkey update" do
+ clear_config(:emoji)
+ clear_config(:assets)
+
+ insert(:config, key: :emoji, value: [groups: [a: 1, b: 2]])
+ insert(:config, key: :assets, value: [mascots: [a: 1, b: 2]])
+
+ Environment.load_from_db_and_update()
+
+ emoji_env = Application.get_env(:pleroma, :emoji)
+ assert emoji_env[:groups] == [a: 1, b: 2]
+ assets_env = Application.get_env(:pleroma, :assets)
+ assert assets_env[:mascots] == [a: 1, b: 2]
+ end
+ end
+
+ describe "update/2 :ex_syslogger" do
+ setup do
+ initial = Application.get_env(:logger, :ex_syslogger)
+
+ config =
+ insert(:config,
+ group: :logger,
+ key: :ex_syslogger,
+ value: [
+ level: :warn,
+ ident: "pleroma",
+ format: "$metadata[$level] $message",
+ metadata: [:request_id, :key]
+ ]
+ )
+
+ on_exit(fn -> Application.put_env(:logger, :ex_syslogger, initial) end)
+ [config: config, initial: initial]
+ end
+
+ test "changing", %{config: config} do
+ assert Environment.update([config]) == :ok
+
+ env = Application.get_env(:logger, :ex_syslogger)
+ assert env[:level] == :warn
+ assert env[:metadata] == [:request_id, :key]
+ end
+
+ test "deletion", %{config: config, initial: initial} do
+ assert Environment.update([config]) == :ok
+
+ {:ok, config} = Pleroma.ConfigDB.delete(config)
+ assert Environment.update([config]) == :ok
+
+ env = Application.get_env(:logger, :ex_syslogger)
+
+ assert env == initial
+ end
+ end
+
+ describe "update/2 :console" do
+ setup do
+ initial = Application.get_env(:logger, :console)
+
+ config =
+ insert(:config,
+ group: :logger,
+ key: :console,
+ value: [
+ level: :info,
+ format: "$time $metadata[$level]",
+ metadata: [:request_id, :key]
+ ]
+ )
+
+ on_exit(fn -> Application.put_env(:logger, :console, initial) end)
+ [config: config, initial: initial]
+ end
+
+ test "change", %{config: config} do
+ assert Environment.update([config]) == :ok
+ env = Application.get_env(:logger, :console)
+ assert env[:level] == :info
+ assert env[:format] == "$time $metadata[$level]"
+ assert env[:metadata] == [:request_id, :key]
+ end
+
+ test "deletion", %{config: config, initial: initial} do
+ assert Environment.update([config]) == :ok
+ {:ok, config} = Pleroma.ConfigDB.delete(config)
+ assert Environment.update([config]) == :ok
+
+ env = Application.get_env(:logger, :console)
+ assert env == initial
+ end
+ end
+
+ describe "update/2 :backends" do
+ setup do
+ initial = Application.get_all_env(:logger)
+
+ config = insert(:config, group: :logger, key: :backends, value: [:console, :ex_syslogger])
+
+ on_exit(fn -> Application.put_all_env(logger: initial) end)
+
+ [config: config, initial: initial]
+ end
+
+ test "change", %{config: config} do
+ assert Environment.update([config]) == :ok
+ env = Application.get_all_env(:logger)
+ assert env[:backends] == [:console, :ex_syslogger]
+ end
+
+ test "deletion", %{config: config, initial: initial} do
+ assert Environment.update([config]) == :ok
+ {:ok, config} = Pleroma.ConfigDB.delete(config)
+ assert Environment.update([config])
+
+ env = Application.get_all_env(:logger)
+ assert env == initial
+ end
+ end
+
+ test "update/2 logger settings" do
+ initial = Application.get_all_env(:logger)
+
+ config1 =
+ insert(:config,
+ group: :logger,
+ key: :console,
+ value: [
+ level: :info,
+ format: "$time $metadata[$level]",
+ metadata: [:request_id, :key]
+ ]
+ )
+
+ config2 =
+ insert(:config,
+ group: :logger,
+ key: :ex_syslogger,
+ value: [
+ level: :warn,
+ ident: "pleroma",
+ format: "$metadata[$level] $message",
+ metadata: [:request_id, :key]
+ ]
+ )
+
+ config3 = insert(:config, group: :logger, key: :backends, value: [:console, :ex_syslogger])
+
+ on_exit(fn -> Application.put_all_env(logger: initial) end)
+
+ assert Environment.update([config1, config2, config3]) == :ok
+
+ env =
+ :logger
+ |> Application.get_all_env()
+ |> Keyword.take([:backends, :console, :ex_syslogger])
+
+ assert env[:console] == config1.value
+ assert env[:ex_syslogger] == config2.value
+ assert env[:backends] == config3.value
+ end
+
+ test "update/2 for change without key :cors_plug" do
+ initial = Application.get_all_env(:cors_plug)
+ config1 = insert(:config, group: :cors_plug, key: :max_age, value: 300)
+ config2 = insert(:config, group: :cors_plug, key: :methods, value: ["GET"])
+
+ assert Environment.update([config1, config2]) == :ok
+
+ env = Application.get_all_env(:cors_plug)
+
+ assert env[:max_age] == 300
+ assert env[:methods] == ["GET"]
+
+ on_exit(fn -> Application.put_all_env(cors_plug: initial) end)
+ end
+end
diff --git a/test/pleroma/application_requirements_test.exs b/test/pleroma/application/requirements_test.exs
index 683ac8c96..1e73798ab 100644
--- a/test/pleroma/application_requirements_test.exs
+++ b/test/pleroma/application/requirements_test.exs
@@ -2,24 +2,24 @@
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
-defmodule Pleroma.ApplicationRequirementsTest do
+defmodule Pleroma.Application.RequirementsTest do
use Pleroma.DataCase
import ExUnit.CaptureLog
import Mock
- alias Pleroma.ApplicationRequirements
- alias Pleroma.Repo
+ alias Pleroma.Application.Requirements
+ alias Pleroma.Emails.Mailer
describe "check_repo_pool_size!/1" do
test "raises if the pool size is unexpected" do
clear_config([Pleroma.Repo, :pool_size], 11)
clear_config([:dangerzone, :override_repo_pool_size], false)
- assert_raise Pleroma.ApplicationRequirements.VerifyError,
+ assert_raise Requirements.VerifyError,
"Repo.pool_size different than recommended value.",
fn ->
- capture_log(&Pleroma.ApplicationRequirements.verify!/0)
+ capture_log(&Requirements.verify!/0)
end
end
@@ -27,27 +27,27 @@ defmodule Pleroma.ApplicationRequirementsTest do
clear_config([Pleroma.Repo, :pool_size], 11)
clear_config([:dangerzone, :override_repo_pool_size], true)
- assert Pleroma.ApplicationRequirements.verify!() == :ok
+ assert Requirements.verify!() == :ok
end
end
describe "check_welcome_message_config!/1" do
setup do: clear_config([:welcome])
- setup do: clear_config([Pleroma.Emails.Mailer])
+ setup do: clear_config([Mailer])
test "raises if welcome email enabled but mail disabled" do
clear_config([:welcome, :email, :enabled], true)
- clear_config([Pleroma.Emails.Mailer, :enabled], false)
+ clear_config([Mailer, :enabled], false)
- assert_raise Pleroma.ApplicationRequirements.VerifyError, "The mail disabled.", fn ->
- capture_log(&Pleroma.ApplicationRequirements.verify!/0)
+ assert_raise Requirements.VerifyError, "The mail disabled.", fn ->
+ capture_log(&Requirements.verify!/0)
end
end
end
describe "check_confirmation_accounts!" do
setup_with_mocks([
- {Pleroma.ApplicationRequirements, [:passthrough],
+ {Requirements, [:passthrough],
[
check_migrations_applied!: fn _ -> :ok end
]}
@@ -59,32 +59,31 @@ defmodule Pleroma.ApplicationRequirementsTest do
test "raises if account confirmation is required but mailer isn't enable" do
clear_config([:instance, :account_activation_required], true)
- clear_config([Pleroma.Emails.Mailer, :enabled], false)
+ clear_config([Mailer, :enabled], false)
- assert_raise Pleroma.ApplicationRequirements.VerifyError,
+ assert_raise Requirements.VerifyError,
"Account activation enabled, but Mailer is disabled. Cannot send confirmation emails.",
fn ->
- capture_log(&Pleroma.ApplicationRequirements.verify!/0)
+ capture_log(&Requirements.verify!/0)
end
end
test "doesn't do anything if account confirmation is disabled" do
clear_config([:instance, :account_activation_required], false)
- clear_config([Pleroma.Emails.Mailer, :enabled], false)
- assert Pleroma.ApplicationRequirements.verify!() == :ok
+ clear_config([Mailer, :enabled], false)
+ assert Requirements.verify!() == :ok
end
test "doesn't do anything if account confirmation is required and mailer is enabled" do
clear_config([:instance, :account_activation_required], true)
- clear_config([Pleroma.Emails.Mailer, :enabled], true)
- assert Pleroma.ApplicationRequirements.verify!() == :ok
+ clear_config([Mailer, :enabled], true)
+ assert Requirements.verify!() == :ok
end
end
describe "check_rum!" do
setup_with_mocks([
- {Pleroma.ApplicationRequirements, [:passthrough],
- [check_migrations_applied!: fn _ -> :ok end]}
+ {Requirements, [:passthrough], [check_migrations_applied!: fn _ -> :ok end]}
]) do
:ok
end
@@ -95,10 +94,10 @@ defmodule Pleroma.ApplicationRequirementsTest do
clear_config([:database, :rum_enabled], true)
with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> false end]}]) do
- assert_raise ApplicationRequirements.VerifyError,
+ assert_raise Requirements.VerifyError,
"Unapplied RUM Migrations detected",
fn ->
- capture_log(&ApplicationRequirements.verify!/0)
+ capture_log(&Requirements.verify!/0)
end
end
end
@@ -107,10 +106,10 @@ defmodule Pleroma.ApplicationRequirementsTest do
clear_config([:database, :rum_enabled], false)
with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> true end]}]) do
- assert_raise ApplicationRequirements.VerifyError,
+ assert_raise Requirements.VerifyError,
"RUM Migrations detected",
fn ->
- capture_log(&ApplicationRequirements.verify!/0)
+ capture_log(&Requirements.verify!/0)
end
end
end
@@ -119,7 +118,7 @@ defmodule Pleroma.ApplicationRequirementsTest do
clear_config([:database, :rum_enabled], true)
with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> true end]}]) do
- assert ApplicationRequirements.verify!() == :ok
+ assert Requirements.verify!() == :ok
end
end
@@ -127,12 +126,12 @@ defmodule Pleroma.ApplicationRequirementsTest do
clear_config([:database, :rum_enabled], false)
with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> false end]}]) do
- assert ApplicationRequirements.verify!() == :ok
+ assert Requirements.verify!() == :ok
end
end
end
- describe "check_migrations_applied!" do
+ describe "check_migrations_applied" do
setup_with_mocks([
{Ecto.Migrator, [],
[
@@ -152,17 +151,17 @@ defmodule Pleroma.ApplicationRequirementsTest do
setup do: clear_config([:i_am_aware_this_may_cause_data_loss, :disable_migration_check])
test "raises if it detects unapplied migrations" do
- assert_raise ApplicationRequirements.VerifyError,
+ assert_raise Requirements.VerifyError,
"Unapplied Migrations detected",
fn ->
- capture_log(&ApplicationRequirements.verify!/0)
+ capture_log(&Requirements.verify!/0)
end
end
test "doesn't do anything if disabled" do
clear_config([:i_am_aware_this_may_cause_data_loss, :disable_migration_check], true)
- assert :ok == ApplicationRequirements.verify!()
+ assert :ok == Requirements.verify!()
end
end
end
diff --git a/test/pleroma/config/loader_test.exs b/test/pleroma/config/loader_test.exs
index b34fd70da..9c4b42e8a 100644
--- a/test/pleroma/config/loader_test.exs
+++ b/test/pleroma/config/loader_test.exs
@@ -8,22 +8,39 @@ defmodule Pleroma.Config.LoaderTest do
alias Pleroma.Config.Loader
test "read/1" do
- config = Loader.read("test/fixtures/config/temp.secret.exs")
+ config = Loader.read!("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 "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]}]
+ test "filter/1" do
+ config = Loader.read!("test/fixtures/config/temp.secret.exs")
+
+ filtered_config = Loader.filter(config)
+
+ refute filtered_config[:postgrex]
+ refute filtered_config[:tesla]
+ refute filtered_config[:phoenix]
+ refute filtered_config[:tz_data]
+ refute filtered_config[:http_signatures]
+ refute filtered_config[:web_push_encryption]
+ refute filtered_config[:floki]
+
+ refute filtered_config[:pleroma][Pleroma.Repo]
+ refute filtered_config[:pleroma][Pleroma.Web.Endpoint]
+ refute filtered_config[:pleroma][Pleroma.InstallerWeb.Endpoint]
+ refute filtered_config[:pleroma][:env]
+ refute filtered_config[:pleroma][:configurable_from_database]
+ refute filtered_config[:pleroma][:database]
+ refute filtered_config[:pleroma][:ecto_repos]
+ refute filtered_config[:pleroma][Pleroma.Gun]
+ refute filtered_config[:pleroma][Pleroma.ReverseProxy.Client]
+
+ assert config[:pleroma][:first_setting][:key] == "value"
+ assert config[:pleroma][:first_setting][:key2] == [Pleroma.Repo]
+ assert config[:quack][:level] == :info
+ assert config[:pleroma][:second_setting][:key] == "value2"
+ assert config[:pleroma][:second_setting][:key2] == ["Activity"]
end
end
diff --git a/test/pleroma/config/transfer_task_test.exs b/test/pleroma/config/transfer_task_test.exs
deleted file mode 100644
index 8ae5d3b81..000000000
--- a/test/pleroma/config/transfer_task_test.exs
+++ /dev/null
@@ -1,120 +0,0 @@
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.Config.TransferTaskTest do
- use Pleroma.DataCase
-
- import ExUnit.CaptureLog
- import Pleroma.Factory
-
- alias Pleroma.Config.TransferTask
-
- setup do: clear_config(:configurable_from_database, true)
-
- test "transfer config values from db to env" do
- refute Application.get_env(:pleroma, :test_key)
- refute Application.get_env(:idna, :test_key)
- refute Application.get_env(:quack, :test_key)
- refute Application.get_env(:postgrex, :test_key)
- initial = Application.get_env(:logger, :level)
-
- insert(:config, key: :test_key, value: [live: 2, com: 3])
- insert(:config, group: :idna, key: :test_key, value: [live: 15, com: 35])
- insert(:config, group: :quack, key: :test_key, value: [:test_value1, :test_value2])
- insert(:config, group: :postgrex, key: :test_key, value: :value)
- insert(:config, group: :logger, key: :level, value: :debug)
-
- TransferTask.start_link([])
-
- assert Application.get_env(:pleroma, :test_key) == [live: 2, com: 3]
- assert Application.get_env(:idna, :test_key) == [live: 15, com: 35]
- assert Application.get_env(:quack, :test_key) == [:test_value1, :test_value2]
- assert Application.get_env(:logger, :level) == :debug
- assert Application.get_env(:postgrex, :test_key) == :value
-
- on_exit(fn ->
- Application.delete_env(:pleroma, :test_key)
- Application.delete_env(:idna, :test_key)
- Application.delete_env(:quack, :test_key)
- Application.delete_env(:postgrex, :test_key)
- Application.put_env(:logger, :level, initial)
- end)
- end
-
- test "transfer config values for 1 group and some keys" do
- level = Application.get_env(:quack, :level)
- meta = Application.get_env(:quack, :meta)
-
- insert(:config, group: :quack, key: :level, value: :info)
- insert(:config, group: :quack, key: :meta, value: [:none])
-
- TransferTask.start_link([])
-
- assert Application.get_env(:quack, :level) == :info
- assert Application.get_env(:quack, :meta) == [:none]
- default = Pleroma.Config.Holder.default_config(:quack, :webhook_url)
- assert Application.get_env(:quack, :webhook_url) == default
-
- on_exit(fn ->
- Application.put_env(:quack, :level, level)
- Application.put_env(:quack, :meta, meta)
- end)
- end
-
- test "transfer config values with full subkey update" do
- clear_config(:emoji)
- clear_config(:assets)
-
- insert(:config, key: :emoji, value: [groups: [a: 1, b: 2]])
- insert(:config, key: :assets, value: [mascots: [a: 1, b: 2]])
-
- TransferTask.start_link([])
-
- emoji_env = Application.get_env(:pleroma, :emoji)
- assert emoji_env[:groups] == [a: 1, b: 2]
- assets_env = Application.get_env(:pleroma, :assets)
- assert assets_env[:mascots] == [a: 1, b: 2]
- end
-
- describe "pleroma restart" do
- setup do
- on_exit(fn -> Restarter.Pleroma.refresh() end)
- end
-
- test "don't restart if no reboot time settings were changed" do
- clear_config(:emoji)
- insert(:config, key: :emoji, value: [groups: [a: 1, b: 2]])
-
- refute String.contains?(
- capture_log(fn -> TransferTask.start_link([]) end),
- "pleroma restarted"
- )
- end
-
- test "on reboot time key" do
- clear_config(:chat)
- insert(:config, key: :chat, value: [enabled: false])
- assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted"
- end
-
- test "on reboot time subkey" do
- clear_config(Pleroma.Captcha)
- insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60])
- assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted"
- end
-
- test "don't restart pleroma on reboot time key and subkey if there is false flag" do
- clear_config(:chat)
- clear_config(Pleroma.Captcha)
-
- insert(:config, key: :chat, value: [enabled: false])
- insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60])
-
- refute String.contains?(
- capture_log(fn -> TransferTask.load_and_update_env([], false) end),
- "pleroma restarted"
- )
- end
- end
-end
diff --git a/test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs b/test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs
index 8cd9f939b..efccb28dc 100644
--- a/test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs
+++ b/test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs
@@ -6,7 +6,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
use Pleroma.Web.ConnCase
use Oban.Testing, repo: Pleroma.Repo
- import ExUnit.CaptureLog
import Pleroma.Factory
import Swoosh.TestAssertions
@@ -322,28 +321,11 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
setup do: clear_config(:configurable_from_database, true)
test "pleroma restarts", %{conn: conn} do
- capture_log(fn ->
- assert conn |> get("/api/pleroma/admin/restart") |> json_response(200) == %{}
- end) =~ "pleroma restarted"
-
- refute Restarter.Pleroma.need_reboot?()
+ assert conn |> get("/api/pleroma/admin/restart") |> json_response(200) == %{}
+ refute Pleroma.Application.ConfigDependentDeps.need_reboot?()
end
end
- test "need_reboot flag", %{conn: conn} do
- assert conn
- |> get("/api/pleroma/admin/need_reboot")
- |> json_response(200) == %{"need_reboot" => false}
-
- Restarter.Pleroma.need_reboot()
-
- assert conn
- |> get("/api/pleroma/admin/need_reboot")
- |> json_response(200) == %{"need_reboot" => true}
-
- on_exit(fn -> Restarter.Pleroma.refresh() end)
- end
-
describe "GET /api/pleroma/admin/users/:nickname/statuses" do
setup do
user = insert(:user)
@@ -999,10 +981,3 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
end
end
end
-
-# Needed for testing
-defmodule Pleroma.Web.Endpoint.NotReal do
-end
-
-defmodule Pleroma.Captcha.NotReal do
-end
diff --git a/test/pleroma/web/admin_api/controllers/config_controller_test.exs b/test/pleroma/web/admin_api/controllers/config_controller_test.exs
index 578a4c914..86099eb1a 100644
--- a/test/pleroma/web/admin_api/controllers/config_controller_test.exs
+++ b/test/pleroma/web/admin_api/controllers/config_controller_test.exs
@@ -188,7 +188,6 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
Application.delete_env(:pleroma, Pleroma.Captcha.NotReal)
Application.put_env(:pleroma, :http, http)
Application.put_env(:tesla, :adapter, Tesla.Mock)
- Restarter.Pleroma.refresh()
end)
end
@@ -620,7 +619,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
value: []
)
- Pleroma.Config.TransferTask.load_and_update_env([], false)
+ Pleroma.Application.Environment.load_from_db_and_update()
assert Application.get_env(:logger, :backends) == []
@@ -686,31 +685,20 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
end
test "update config setting & delete with fallback to default value", %{
- conn: conn,
- admin: admin,
- token: token
+ conn: conn
} do
ueberauth = Application.get_env(:ueberauth, Ueberauth)
- insert(:config, key: :keyaa1)
- insert(:config, key: :keyaa2)
- config3 =
- insert(:config,
- group: :ueberauth,
- key: Ueberauth
- )
-
- conn =
- conn
- |> put_req_header("content-type", "application/json")
- |> post("/api/pleroma/admin/config", %{
- configs: [
- %{group: ":pleroma", key: ":keyaa1", value: "another_value"},
- %{group: ":pleroma", key: ":keyaa2", value: "another_value"}
- ]
- })
-
- assert json_response_and_validate_schema(conn, 200) == %{
+ assert conn
+ |> put_req_header("content-type", "application/json")
+ |> post("/api/pleroma/admin/config", %{
+ configs: [
+ %{group: ":pleroma", key: ":keyaa1", value: "another_value"},
+ %{group: ":pleroma", key: ":keyaa2", value: "another_value"},
+ %{group: ":ueberauth", key: "Ueberauth", value: "another_value"}
+ ]
+ })
+ |> json_response_and_validate_schema(200) == %{
"configs" => [
%{
"group" => ":pleroma",
@@ -723,6 +711,12 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
"key" => ":keyaa2",
"value" => "another_value",
"db" => [":keyaa2"]
+ },
+ %{
+ "db" => ["Ueberauth"],
+ "group" => ":ueberauth",
+ "key" => "Ueberauth",
+ "value" => "another_value"
}
],
"need_reboot" => false
@@ -730,25 +724,21 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
assert Application.get_env(:pleroma, :keyaa1) == "another_value"
assert Application.get_env(:pleroma, :keyaa2) == "another_value"
- assert Application.get_env(:ueberauth, Ueberauth) == config3.value
-
- conn =
- build_conn()
- |> assign(:user, admin)
- |> assign(:token, token)
- |> put_req_header("content-type", "application/json")
- |> post("/api/pleroma/admin/config", %{
- configs: [
- %{group: ":pleroma", key: ":keyaa2", delete: true},
- %{
- group: ":ueberauth",
- key: "Ueberauth",
- delete: true
- }
- ]
- })
+ assert Application.get_env(:ueberauth, Ueberauth) == "another_value"
- assert json_response_and_validate_schema(conn, 200) == %{
+ assert conn
+ |> put_req_header("content-type", "application/json")
+ |> post("/api/pleroma/admin/config", %{
+ configs: [
+ %{group: ":pleroma", key: ":keyaa2", delete: true},
+ %{
+ group: ":ueberauth",
+ key: "Ueberauth",
+ delete: true
+ }
+ ]
+ })
+ |> json_response_and_validate_schema(200) == %{
"configs" => [],
"need_reboot" => false
}
@@ -1454,3 +1444,10 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
end
end
end
+
+# Needed for testing
+defmodule Pleroma.Web.Endpoint.NotReal do
+end
+
+defmodule Pleroma.Captcha.NotReal do
+end
diff --git a/test/support/data_case.ex b/test/support/data_case.ex
index 0ee2aa4a2..d4998a79c 100644
--- a/test/support/data_case.ex
+++ b/test/support/data_case.ex
@@ -48,19 +48,11 @@ defmodule Pleroma.DataCase do
end
def clear_cachex do
- Pleroma.Supervisor
- |> Supervisor.which_children()
- |> Enum.each(fn
- {name, _, _, [Cachex]} ->
- name
- |> to_string
- |> String.trim_leading("cachex_")
- |> Kernel.<>("_cache")
- |> String.to_existing_atom()
- |> Cachex.clear()
-
- _ ->
- nil
+ Pleroma.Application.StartUpDependencies.cachex_deps()
+ |> Enum.each(fn {name, _} ->
+ "#{name}_cache"
+ |> String.to_existing_atom()
+ |> Cachex.clear()
end)
end