logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

email_test.exs (3056B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Mix.Tasks.Pleroma.EmailTest do
  5. use Pleroma.DataCase
  6. import Swoosh.TestAssertions
  7. alias Pleroma.Config
  8. alias Pleroma.Tests.ObanHelpers
  9. import Pleroma.Factory
  10. setup_all do
  11. Mix.shell(Mix.Shell.Process)
  12. on_exit(fn ->
  13. Mix.shell(Mix.Shell.IO)
  14. end)
  15. :ok
  16. end
  17. setup do: clear_config([Pleroma.Emails.Mailer, :enabled], true)
  18. setup do: clear_config([:instance, :account_activation_required], true)
  19. describe "pleroma.email test" do
  20. test "Sends test email with no given address" do
  21. mail_to = Config.get([:instance, :email])
  22. :ok = Mix.Tasks.Pleroma.Email.run(["test"])
  23. ObanHelpers.perform_all()
  24. assert_receive {:mix_shell, :info, [message]}
  25. assert message =~ "Test email has been sent"
  26. assert_email_sent(
  27. to: mail_to,
  28. html_body: ~r/a test email was requested./i
  29. )
  30. end
  31. test "Sends test email with given address" do
  32. mail_to = "hewwo@example.com"
  33. :ok = Mix.Tasks.Pleroma.Email.run(["test", "--to", mail_to])
  34. ObanHelpers.perform_all()
  35. assert_receive {:mix_shell, :info, [message]}
  36. assert message =~ "Test email has been sent"
  37. assert_email_sent(
  38. to: mail_to,
  39. html_body: ~r/a test email was requested./i
  40. )
  41. end
  42. test "Sends confirmation emails" do
  43. local_user1 =
  44. insert(:user, %{
  45. is_confirmed: false,
  46. confirmation_token: "mytoken",
  47. is_active: true,
  48. email: "local1@pleroma.com",
  49. local: true
  50. })
  51. local_user2 =
  52. insert(:user, %{
  53. is_confirmed: false,
  54. confirmation_token: "mytoken",
  55. is_active: true,
  56. email: "local2@pleroma.com",
  57. local: true
  58. })
  59. :ok = Mix.Tasks.Pleroma.Email.run(["resend_confirmation_emails"])
  60. ObanHelpers.perform_all()
  61. assert_email_sent(to: {local_user1.name, local_user1.email})
  62. assert_email_sent(to: {local_user2.name, local_user2.email})
  63. end
  64. test "Does not send confirmation email to inappropriate users" do
  65. # confirmed user
  66. insert(:user, %{
  67. is_confirmed: true,
  68. confirmation_token: "mytoken",
  69. is_active: true,
  70. email: "confirmed@pleroma.com",
  71. local: true
  72. })
  73. # remote user
  74. insert(:user, %{
  75. is_active: true,
  76. email: "remote@not-pleroma.com",
  77. local: false
  78. })
  79. # deactivated user =
  80. insert(:user, %{
  81. is_active: false,
  82. email: "deactivated@pleroma.com",
  83. local: false
  84. })
  85. # invisible user
  86. insert(:user, %{
  87. is_active: true,
  88. email: "invisible@pleroma.com",
  89. local: true,
  90. invisible: true
  91. })
  92. :ok = Mix.Tasks.Pleroma.Email.run(["resend_confirmation_emails"])
  93. ObanHelpers.perform_all()
  94. refute_email_sent()
  95. end
  96. end
  97. end