EmailTest: use config mock

This commit is contained in:
Lain Soykaf 2023-12-12 15:25:52 +04:00
parent b13820dcd0
commit dca41cc4a3
4 changed files with 19 additions and 6 deletions

View File

@ -152,6 +152,8 @@
config :pleroma, Pleroma.Upload, config_impl: Pleroma.UnstubbedConfigMock config :pleroma, Pleroma.Upload, config_impl: Pleroma.UnstubbedConfigMock
config :pleroma, Pleroma.ScheduledActivity, config_impl: Pleroma.UnstubbedConfigMock config :pleroma, Pleroma.ScheduledActivity, config_impl: Pleroma.UnstubbedConfigMock
config :pleroma, Pleroma.Web.RichMedia.Helpers, config_impl: Pleroma.StaticStubbedConfigMock config :pleroma, Pleroma.Web.RichMedia.Helpers, config_impl: Pleroma.StaticStubbedConfigMock
config :pleroma, Pleroma.Emails.Mailer, config_impl: Pleroma.UnstubbedConfigMock
config :pleroma, Pleroma.User, config_impl: Pleroma.UnstubbedConfigMock
if File.exists?("./config/test.secret.exs") do if File.exists?("./config/test.secret.exs") do
import_config "test.secret.exs" import_config "test.secret.exs"

View File

@ -14,9 +14,10 @@ defmodule Pleroma.Emails.Mailer do
@otp_app :pleroma @otp_app :pleroma
@mailer_config [otp: :pleroma] @mailer_config [otp: :pleroma]
@config_impl Application.compile_env(:pleroma, [__MODULE__, :config_impl], Pleroma.Config)
@spec enabled?() :: boolean() @spec enabled?() :: boolean()
def enabled?, do: Pleroma.Config.get([__MODULE__, :enabled]) def enabled?, do: @config_impl.get([__MODULE__, :enabled])
@doc "add email to queue" @doc "add email to queue"
def deliver_async(email, config \\ []) do def deliver_async(email, config \\ []) do

View File

@ -86,6 +86,7 @@ defmodule Pleroma.User do
] ]
@cachex Pleroma.Config.get([:cachex, :provider], Cachex) @cachex Pleroma.Config.get([:cachex, :provider], Cachex)
@config_impl Application.compile_env(:pleroma, [__MODULE__, :config_impl], Pleroma.Config)
schema "users" do schema "users" do
field(:bio, :string, default: "") field(:bio, :string, default: "")
@ -1000,7 +1001,7 @@ defp maybe_send_welcome_email(_), do: {:ok, :noop}
@spec maybe_send_confirmation_email(User.t()) :: {:ok, :enqueued | :noop} @spec maybe_send_confirmation_email(User.t()) :: {:ok, :enqueued | :noop}
def maybe_send_confirmation_email(%User{is_confirmed: false, email: email} = user) def maybe_send_confirmation_email(%User{is_confirmed: false, email: email} = user)
when is_binary(email) do when is_binary(email) do
if Config.get([:instance, :account_activation_required]) do if @config_impl.get([:instance, :account_activation_required]) do
send_confirmation_email(user) send_confirmation_email(user)
{:ok, :enqueued} {:ok, :enqueued}
else else

View File

@ -3,13 +3,15 @@
# SPDX-License-Identifier: AGPL-3.0-only # SPDX-License-Identifier: AGPL-3.0-only
defmodule Mix.Tasks.Pleroma.EmailTest do defmodule Mix.Tasks.Pleroma.EmailTest do
use Pleroma.DataCase use Pleroma.DataCase, async: true
import Swoosh.TestAssertions import Swoosh.TestAssertions
alias Pleroma.Config alias Pleroma.Test.StaticConfig, as: Config
alias Pleroma.Tests.ObanHelpers alias Pleroma.Tests.ObanHelpers
alias Pleroma.UnstubbedConfigMock, as: ConfigMock
import Mox
import Pleroma.Factory import Pleroma.Factory
setup_all do setup_all do
@ -22,8 +24,15 @@ defmodule Mix.Tasks.Pleroma.EmailTest do
:ok :ok
end end
setup do: clear_config([Pleroma.Emails.Mailer, :enabled], true) setup do
setup do: clear_config([:instance, :account_activation_required], true) ConfigMock
|> stub(:get, fn
[Pleroma.Emails.Mailer, :enabled] -> true
[:instance, :account_activation_required] -> true
end)
:ok
end
describe "pleroma.email test" do describe "pleroma.email test" do
test "Sends test email with no given address" do test "Sends test email with no given address" do