defp handle_result(:ok), do: :ok
defp handle_result({:error, message}), do: raise(VerifyError, message: message)
- defp check_migrations_applied!(:ok) do
+ # Checks for pending migrations.
+ #
+ def check_migrations_applied!(:ok) do
unless Pleroma.Config.get(
[:i_am_aware_this_may_cause_data_loss, :disable_migration_check],
false
end
end
- defp check_migrations_applied!(result), do: result
+ def check_migrations_applied!(result), do: result
+ # Checks for settings of RUM indexes.
+ #
defp check_rum!(:ok) do
{_, res, _} =
Ecto.Migrator.with_repo(Pleroma.Repo, fn repo ->
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
-defmodule Pleroma.RepoTest do
+defmodule Pleroma.ApplicationRequirementsTest do
use Pleroma.DataCase
import ExUnit.CaptureLog
import Mock
describe "check_rum!" do
setup_with_mocks([
- {Ecto.Migrator, [],
- [
- with_repo: fn repo, fun -> passthrough([repo, fun]) end,
- migrations: fn Pleroma.Repo -> [] end
- ]}
+ {Pleroma.ApplicationRequirements, [:passthrough],
+ [check_migrations_applied!: fn _ -> :ok end]}
]) do
:ok
end
setup do: clear_config([:database, :rum_enabled])
- test "raises if rum is enabled and detects unapplied rum migrations" do
+ test "raises if rum is enabled and detects unapplied rum migrations" do
Pleroma.Config.put([:database, :rum_enabled], true)
assert_raise Pleroma.ApplicationRequirements.VerifyError,
capture_log(&Pleroma.ApplicationRequirements.verify!/0)
end
end
+
+ test "raises if rum is disabled and detects rum migrations" do
+ Pleroma.Config.put([:database, :rum_enabled], false)
+
+ with_mocks([
+ {
+ Pleroma.Repo,
+ [:passthrough],
+ [exists?: fn _, _ -> true end]
+ }
+ ]) do
+ assert_raise Pleroma.ApplicationRequirements.VerifyError,
+ "RUM Migrations detected",
+ fn ->
+ capture_log(&Pleroma.ApplicationRequirements.verify!/0)
+ end
+ end
+ end
+
+ test "doesn't do anything if rum enabled and applied migrations" do
+ Pleroma.Config.put([:database, :rum_enabled], true)
+
+ with_mocks([
+ {
+ Pleroma.Repo,
+ [:passthrough],
+ [exists?: fn _, _ -> true end]
+ }
+ ]) do
+ assert Pleroma.ApplicationRequirements.verify!() == :ok
+ end
+ end
+
+ test "doesn't do anything if rum disabled" do
+ Pleroma.Config.put([:database, :rum_enabled], false)
+ assert Pleroma.ApplicationRequirements.verify!() == :ok
+ end
end
describe "check_migrations_applied!" do