32
32
use OCA \Mail \Service \TransmissionService ;
33
33
use OCA \Mail \SMTP \SmtpClientFactory ;
34
34
use OCA \Mail \Support \PerformanceLogger ;
35
+ use OCP \AppFramework \Db \DoesNotExistException ;
35
36
use OCP \EventDispatcher \IEventDispatcher ;
36
37
use PHPUnit \Framework \MockObject \MockObject ;
37
38
use Psr \Log \LoggerInterface ;
@@ -133,32 +134,67 @@ public function testSendNewMessageSmimeError() {
133
134
}
134
135
135
136
public function testSendMessageFromAlias () {
137
+ // Arrange
136
138
$ mailAccount = new MailAccount ();
137
- $ mailAccount ->setUserId ('testuser ' );
139
+ $ mailAccount ->setName ('Bob ' );
140
+ $ mailAccount ->setEmail ('bob@example.org ' );
141
+ $ mailAccount ->setUserId ('bob ' );
138
142
$ mailAccount ->setSentMailboxId (123 );
139
- /** @var Account|MockObject $account */
140
- $ account = $ this ->createMock (Account::class);
141
- $ account ->method ('getMailAccount ' )->willReturn ($ mailAccount );
142
- $ account ->method ('getName ' )->willReturn ('Test User ' );
143
- $ account ->method ('getEMailAddress ' )->willReturn ('test@user ' );
144
- $ account ->method ('getUserId ' )->willReturn ('testuser ' );
143
+ $ account = new Account ($ mailAccount );
145
144
$ alias = new Alias ();
146
145
$ alias ->setId (1 );
147
- $ alias ->setAlias ('a@d.com ' );
146
+ $ alias ->setName ('Info ' );
147
+ $ alias ->setAlias ('info@example.org ' );
148
148
$ localMessage = new LocalMessage ();
149
149
$ localMessage ->setSubject ('Test ' );
150
150
$ localMessage ->setBodyPlain ('Test ' );
151
151
$ localMessage ->setHtml (false );
152
152
$ localMessage ->setAliasId (1 );
153
+ $ localMessage ->setRequestMdn (true );
153
154
$ transport = $ this ->createMock (Horde_Mail_Transport::class);
155
+ $ this ->smtpClientFactory ->expects ($ this ->once ())
156
+ ->method ('create ' )
157
+ ->willReturn ($ transport );
158
+ $ this ->aliasService ->expects (self ::once ())
159
+ ->method ('find ' )
160
+ ->willReturn ($ alias );
161
+ $ this ->transmissionService ->expects (self ::once ())
162
+ ->method ('getSignMimePart ' )
163
+ ->willReturnCallback (static fn ($ localMessage , $ account , $ mimePart ) => $ mimePart );
164
+ $ this ->transmissionService ->expects (self ::once ())
165
+ ->method ('getEncryptMimePart ' )
166
+ ->willReturnCallback (static fn ($ localMessage , $ to , $ cc , $ bcc , $ account , $ mimePart ) => $ mimePart );
167
+
168
+ // Act
169
+ $ this ->transmission ->sendMessage ($ account , $ localMessage );
170
+
171
+ // Assert
172
+ $ this ->assertEquals (LocalMessage::STATUS_RAW , $ localMessage ->getStatus ());
173
+ $ this ->assertStringContainsString ('From: Info <info@example.org ' , $ localMessage ->getRaw ());
174
+ $ this ->assertStringContainsString ('Disposition-Notification-To: Info <info@example.org> ' , $ localMessage ->getRaw ());
175
+ }
154
176
177
+ public function testSendMessageAliasFallbackName () {
178
+ // Arrange
179
+ $ mailAccount = new MailAccount ();
180
+ $ mailAccount ->setName ('Bob ' );
181
+ $ mailAccount ->setEmail ('bob@example.org ' );
182
+ $ mailAccount ->setUserId ('bob ' );
183
+ $ mailAccount ->setSentMailboxId (123 );
184
+ $ account = new Account ($ mailAccount );
185
+ $ alias = new Alias ();
186
+ $ alias ->setId (1 );
187
+ $ alias ->setAlias ('info@example.org ' );
188
+ $ localMessage = new LocalMessage ();
189
+ $ localMessage ->setSubject ('Test ' );
190
+ $ localMessage ->setBodyPlain ('Test ' );
191
+ $ localMessage ->setHtml (false );
192
+ $ localMessage ->setAliasId (1 );
193
+ $ localMessage ->setRequestMdn (true );
194
+ $ transport = $ this ->createMock (Horde_Mail_Transport::class);
155
195
$ this ->smtpClientFactory ->expects ($ this ->once ())
156
196
->method ('create ' )
157
- ->with ($ account )
158
197
->willReturn ($ transport );
159
- $ account ->expects ($ this ->once ())
160
- ->method ('getName ' )
161
- ->willReturn ('User ' );
162
198
$ this ->aliasService ->expects (self ::once ())
163
199
->method ('find ' )
164
200
->willReturn ($ alias );
@@ -169,8 +205,50 @@ public function testSendMessageFromAlias() {
169
205
->method ('getEncryptMimePart ' )
170
206
->willReturnCallback (static fn ($ localMessage , $ to , $ cc , $ bcc , $ account , $ mimePart ) => $ mimePart );
171
207
208
+ // Act
209
+ $ this ->transmission ->sendMessage ($ account , $ localMessage );
210
+
211
+ // Assert
212
+ $ this ->assertEquals (LocalMessage::STATUS_RAW , $ localMessage ->getStatus ());
213
+ $ this ->assertStringContainsString ('From: Bob <info@example.org ' , $ localMessage ->getRaw ());
214
+ $ this ->assertStringContainsString ('Disposition-Notification-To: Bob <info@example.org> ' , $ localMessage ->getRaw ());
215
+ }
216
+
217
+ public function testSendMessageAliasDoesNotExist () {
218
+ // Arrange
219
+ $ mailAccount = new MailAccount ();
220
+ $ mailAccount ->setName ('Bob ' );
221
+ $ mailAccount ->setEmail ('bob@example.org ' );
222
+ $ mailAccount ->setUserId ('bob ' );
223
+ $ mailAccount ->setSentMailboxId (123 );
224
+ $ account = new Account ($ mailAccount );
225
+ $ localMessage = new LocalMessage ();
226
+ $ localMessage ->setSubject ('Test ' );
227
+ $ localMessage ->setBodyPlain ('Test ' );
228
+ $ localMessage ->setHtml (false );
229
+ $ localMessage ->setAliasId (1 );
230
+ $ localMessage ->setRequestMdn (true );
231
+ $ transport = $ this ->createMock (Horde_Mail_Transport::class);
232
+ $ this ->smtpClientFactory ->expects ($ this ->once ())
233
+ ->method ('create ' )
234
+ ->willReturn ($ transport );
235
+ $ this ->aliasService ->expects (self ::once ())
236
+ ->method ('find ' )
237
+ ->willThrowException (new DoesNotExistException ('Alias does not exist ' ));
238
+ $ this ->transmissionService ->expects (self ::once ())
239
+ ->method ('getSignMimePart ' )
240
+ ->willReturnCallback (static fn ($ localMessage , $ account , $ mimePart ) => $ mimePart );
241
+ $ this ->transmissionService ->expects (self ::once ())
242
+ ->method ('getEncryptMimePart ' )
243
+ ->willReturnCallback (static fn ($ localMessage , $ to , $ cc , $ bcc , $ account , $ mimePart ) => $ mimePart );
244
+
245
+ // Act
172
246
$ this ->transmission ->sendMessage ($ account , $ localMessage );
247
+
248
+ // Assert
173
249
$ this ->assertEquals (LocalMessage::STATUS_RAW , $ localMessage ->getStatus ());
250
+ $ this ->assertStringContainsString ('From: Bob <bob@example.org ' , $ localMessage ->getRaw ());
251
+ $ this ->assertStringContainsString ('Disposition-Notification-To: Bob <bob@example.org> ' , $ localMessage ->getRaw ());
174
252
}
175
253
176
254
public function testSendNewMessageWithMessageAsAttachment () {
0 commit comments