add tests for email verification flag lifecycle
All checks were successful
deploy / deploy (push) Successful in 34s
All checks were successful
deploy / deploy (push) Successful in 34s
Tests that sending a test email sets the verified flag, saving config clears it, and disconnecting clears it. Also adds unit tests for email_verified?/mark/clear in the Mailer module. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
3dca9ad9d0
commit
069fbc7df2
@ -59,6 +59,35 @@ defmodule Berrypod.MailerTest do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "email_verified?/0" do
|
||||||
|
test "returns false when adapter is Local" do
|
||||||
|
Application.put_env(:berrypod, Mailer, adapter: Swoosh.Adapters.Local)
|
||||||
|
Mailer.mark_email_verified()
|
||||||
|
refute Mailer.email_verified?()
|
||||||
|
end
|
||||||
|
|
||||||
|
test "returns false when configured but not verified" do
|
||||||
|
Application.put_env(:berrypod, Mailer, adapter: Swoosh.Adapters.Postmark, api_key: "test")
|
||||||
|
Mailer.clear_email_verified()
|
||||||
|
refute Mailer.email_verified?()
|
||||||
|
end
|
||||||
|
|
||||||
|
test "returns true when configured and verified" do
|
||||||
|
Application.put_env(:berrypod, Mailer, adapter: Swoosh.Adapters.Postmark, api_key: "test")
|
||||||
|
Mailer.mark_email_verified()
|
||||||
|
assert Mailer.email_verified?()
|
||||||
|
end
|
||||||
|
|
||||||
|
test "clear_email_verified resets the flag" do
|
||||||
|
Application.put_env(:berrypod, Mailer, adapter: Swoosh.Adapters.Postmark, api_key: "test")
|
||||||
|
Mailer.mark_email_verified()
|
||||||
|
assert Mailer.email_verified?()
|
||||||
|
|
||||||
|
Mailer.clear_email_verified()
|
||||||
|
refute Mailer.email_verified?()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "current_config/0" do
|
describe "current_config/0" do
|
||||||
test "returns {nil, %{}} when no adapter configured" do
|
test "returns {nil, %{}} when no adapter configured" do
|
||||||
Application.put_env(:berrypod, Mailer, adapter: Swoosh.Adapters.Local)
|
Application.put_env(:berrypod, Mailer, adapter: Swoosh.Adapters.Local)
|
||||||
|
|||||||
@ -4,7 +4,7 @@ defmodule BerrypodWeb.Admin.EmailSettingsTest do
|
|||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
import Berrypod.AccountsFixtures
|
import Berrypod.AccountsFixtures
|
||||||
|
|
||||||
alias Berrypod.Settings
|
alias Berrypod.{Mailer, Settings}
|
||||||
|
|
||||||
setup do
|
setup do
|
||||||
# Ensure mailer starts as test adapter and restore on exit
|
# Ensure mailer starts as test adapter and restore on exit
|
||||||
@ -142,6 +142,50 @@ defmodule BerrypodWeb.Admin.EmailSettingsTest do
|
|||||||
|
|
||||||
refute html =~ "Send test email"
|
refute html =~ "Send test email"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "sending test email sets verified flag", %{conn: conn} do
|
||||||
|
Settings.put_setting("email_adapter", "postmark")
|
||||||
|
Settings.put_secret("email_postmark_api_key", "pm_test_abc")
|
||||||
|
|
||||||
|
{:ok, view, _html} = live(conn, ~p"/admin/settings/email")
|
||||||
|
|
||||||
|
html = render_click(view, "send_test")
|
||||||
|
|
||||||
|
assert html =~ "Test email sent"
|
||||||
|
assert Mailer.email_verified?()
|
||||||
|
end
|
||||||
|
|
||||||
|
test "saving config clears verified flag", %{conn: conn} do
|
||||||
|
Mailer.mark_email_verified()
|
||||||
|
assert Mailer.email_verified?()
|
||||||
|
|
||||||
|
{:ok, view, _html} = live(conn, ~p"/admin/settings/email")
|
||||||
|
|
||||||
|
view
|
||||||
|
|> form("form[phx-change=\"change_adapter\"]", %{email: %{adapter: "postmark"}})
|
||||||
|
|> render_change()
|
||||||
|
|
||||||
|
view
|
||||||
|
|> form("form[phx-submit=\"save\"]", %{
|
||||||
|
email: %{adapter: "postmark", api_key: "pm_new_key"}
|
||||||
|
})
|
||||||
|
|> render_submit()
|
||||||
|
|
||||||
|
refute Mailer.email_verified?()
|
||||||
|
end
|
||||||
|
|
||||||
|
test "disconnecting clears verified flag", %{conn: conn} do
|
||||||
|
Settings.put_setting("email_adapter", "postmark")
|
||||||
|
Settings.put_secret("email_postmark_api_key", "pm_test_abc")
|
||||||
|
Mailer.mark_email_verified()
|
||||||
|
assert Mailer.email_verified?()
|
||||||
|
|
||||||
|
{:ok, view, _html} = live(conn, ~p"/admin/settings/email")
|
||||||
|
|
||||||
|
render_click(view, "disconnect")
|
||||||
|
|
||||||
|
refute Mailer.email_verified?()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "unauthenticated" do
|
describe "unauthenticated" do
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user