Improved WelcomeChatMessageTest
[akkoma] / test / application_requirements_test.exs
index b8d073e11c325df240e17b8205c01b1627772ccb..21d24ddd069514d2aa67f3855e9ecc21ddddd79a 100644 (file)
@@ -7,6 +7,58 @@ defmodule Pleroma.ApplicationRequirementsTest do
   import ExUnit.CaptureLog
   import Mock
 
+  alias Pleroma.Repo
+
+  describe "check_welcome_message_config!/1" do
+    setup do: clear_config([:welcome])
+    setup do: clear_config([Pleroma.Emails.Mailer])
+
+    test "raises if welcome email enabled but mail disabled" do
+      Pleroma.Config.put([:welcome, :email, :enabled], true)
+      Pleroma.Config.put([Pleroma.Emails.Mailer, :enabled], false)
+
+      assert_raise Pleroma.ApplicationRequirements.VerifyError, "The mail disabled.", fn ->
+        capture_log(&Pleroma.ApplicationRequirements.verify!/0)
+      end
+    end
+  end
+
+  describe "check_confirmation_accounts!" do
+    setup_with_mocks([
+      {Pleroma.ApplicationRequirements, [:passthrough],
+       [
+         check_migrations_applied!: fn _ -> :ok end
+       ]}
+    ]) do
+      :ok
+    end
+
+    setup do: clear_config([:instance, :account_activation_required])
+
+    test "raises if account confirmation is required but mailer isn't enable" do
+      Pleroma.Config.put([:instance, :account_activation_required], true)
+      Pleroma.Config.put([Pleroma.Emails.Mailer, :enabled], false)
+
+      assert_raise Pleroma.ApplicationRequirements.VerifyError,
+                   "Account activation enabled, but Mailer is disabled. Cannot send confirmation emails.",
+                   fn ->
+                     capture_log(&Pleroma.ApplicationRequirements.verify!/0)
+                   end
+    end
+
+    test "doesn't do anything if account confirmation is disabled" do
+      Pleroma.Config.put([:instance, :account_activation_required], false)
+      Pleroma.Config.put([Pleroma.Emails.Mailer, :enabled], false)
+      assert Pleroma.ApplicationRequirements.verify!() == :ok
+    end
+
+    test "doesn't do anything if account confirmation is required and mailer is enabled" do
+      Pleroma.Config.put([:instance, :account_activation_required], true)
+      Pleroma.Config.put([Pleroma.Emails.Mailer, :enabled], true)
+      assert Pleroma.ApplicationRequirements.verify!() == :ok
+    end
+  end
+
   describe "check_rum!" do
     setup_with_mocks([
       {Pleroma.ApplicationRequirements, [:passthrough],
@@ -20,23 +72,19 @@ defmodule Pleroma.ApplicationRequirementsTest 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,
-                   "Unapplied RUM Migrations detected",
-                   fn ->
-                     capture_log(&Pleroma.ApplicationRequirements.verify!/0)
-                   end
+      with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> false end]}]) do
+        assert_raise Pleroma.ApplicationRequirements.VerifyError,
+                     "Unapplied RUM Migrations detected",
+                     fn ->
+                       capture_log(&Pleroma.ApplicationRequirements.verify!/0)
+                     end
+      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
+      with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> true end]}]) do
         assert_raise Pleroma.ApplicationRequirements.VerifyError,
                      "RUM Migrations detected",
                      fn ->
@@ -48,20 +96,17 @@ defmodule Pleroma.ApplicationRequirementsTest do
     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
+      with_mocks([{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
+
+      with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> false end]}]) do
+        assert Pleroma.ApplicationRequirements.verify!() == :ok
+      end
     end
   end
 
@@ -70,7 +115,7 @@ defmodule Pleroma.ApplicationRequirementsTest do
       {Ecto.Migrator, [],
        [
          with_repo: fn repo, fun -> passthrough([repo, fun]) end,
-         migrations: fn Pleroma.Repo ->
+         migrations: fn Repo ->
            [
              {:up, 20_191_128_153_944, "fix_missing_following_count"},
              {:up, 20_191_203_043_610, "create_report_notes"},