Refactor User.post_register_action/1 emails
[akkoma] / test / tasks / email_test.exs
1 defmodule Mix.Tasks.Pleroma.EmailTest do
2 use Pleroma.DataCase
3
4 import Swoosh.TestAssertions
5
6 alias Pleroma.Config
7 alias Pleroma.Tests.ObanHelpers
8
9 import Pleroma.Factory
10
11 setup_all do
12 Mix.shell(Mix.Shell.Process)
13
14 on_exit(fn ->
15 Mix.shell(Mix.Shell.IO)
16 end)
17
18 :ok
19 end
20
21 setup do: clear_config([Pleroma.Emails.Mailer, :enabled], true)
22 setup do: clear_config([:instance, :account_activation_required], true)
23
24 describe "pleroma.email test" do
25 test "Sends test email with no given address" do
26 mail_to = Config.get([:instance, :email])
27
28 :ok = Mix.Tasks.Pleroma.Email.run(["test"])
29
30 ObanHelpers.perform_all()
31
32 assert_receive {:mix_shell, :info, [message]}
33 assert message =~ "Test email has been sent"
34
35 assert_email_sent(
36 to: mail_to,
37 html_body: ~r/a test email was requested./i
38 )
39 end
40
41 test "Sends test email with given address" do
42 mail_to = "hewwo@example.com"
43
44 :ok = Mix.Tasks.Pleroma.Email.run(["test", "--to", mail_to])
45
46 ObanHelpers.perform_all()
47
48 assert_receive {:mix_shell, :info, [message]}
49 assert message =~ "Test email has been sent"
50
51 assert_email_sent(
52 to: mail_to,
53 html_body: ~r/a test email was requested./i
54 )
55 end
56
57 test "Sends confirmation emails" do
58 local_user1 =
59 insert(:user, %{
60 confirmation_pending: true,
61 confirmation_token: "mytoken",
62 deactivated: false,
63 email: "local1@pleroma.com",
64 local: true
65 })
66
67 local_user2 =
68 insert(:user, %{
69 confirmation_pending: true,
70 confirmation_token: "mytoken",
71 deactivated: false,
72 email: "local2@pleroma.com",
73 local: true
74 })
75
76 :ok = Mix.Tasks.Pleroma.Email.run(["resend_confirmation_emails"])
77
78 ObanHelpers.perform_all()
79
80 assert_email_sent(to: {local_user1.name, local_user1.email})
81 assert_email_sent(to: {local_user2.name, local_user2.email})
82 end
83
84 test "Does not send confirmation email to inappropriate users" do
85 # confirmed user
86 insert(:user, %{
87 confirmation_pending: false,
88 confirmation_token: "mytoken",
89 deactivated: false,
90 email: "confirmed@pleroma.com",
91 local: true
92 })
93
94 # remote user
95 insert(:user, %{
96 deactivated: false,
97 email: "remote@not-pleroma.com",
98 local: false
99 })
100
101 # deactivated user =
102 insert(:user, %{
103 deactivated: true,
104 email: "deactivated@pleroma.com",
105 local: false
106 })
107
108 # invisible user
109 insert(:user, %{
110 deactivated: false,
111 email: "invisible@pleroma.com",
112 local: true,
113 invisible: true
114 })
115
116 :ok = Mix.Tasks.Pleroma.Email.run(["resend_confirmation_emails"])
117
118 ObanHelpers.perform_all()
119
120 refute_email_sent()
121 end
122 end
123 end