ILIAS  trunk Revision v12.0_alpha-1227-g7ff6d300864
ilMailAddressTypesTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22{
23 protected function setUp(): void
24 {
25 parent::setUp();
27 }
28
30 {
31 return $this->getMockBuilder(ilGroupNameAsMailValidator::class)
32 ->disableOriginalConstructor()
33 ->onlyMethods(['validate'])
34 ->getMock();
35 }
36
38 {
39 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
40 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
41 $rbacreview = $this->getMockBuilder(ilRbacReview::class)->disableOriginalConstructor()->getMock();
42 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
43 $mailing_lists = $this->getMockBuilder(ilMailingLists::class)->disableOriginalConstructor()->getMock();
44 $role_mailbox_search = $this->getMockBuilder(ilRoleMailboxSearch::class)->disableOriginalConstructor()->getMock();
45
46 return new ilMailAddressTypeFactory(
47 $group_name_validator,
48 $logger,
49 $rbacsystem,
50 $rbacreview,
51 $address_type_helper,
52 $mailing_lists,
53 $role_mailbox_search
54 );
55 }
56
58 {
59 if ($type instanceof ilMailCachedAddressType) {
60 $refl = new ReflectionObject($type);
61 $inner = $refl->getProperty('inner');
62
63 return $inner->getValue($type);
64 }
65
66 return $type;
67 }
68
70 {
71 $group_name_validator = $this->createGroupNameAsValidatorMock();
72 $group_name_validator->method('validate')->willReturn(true);
73
74 $mail_address_type_factory = $this->getAddressTypeFactory($group_name_validator);
75
76 $result = $mail_address_type_factory->getByPrefix(new ilMailAddress('#il_ml_4711', ''), false);
77
78 $this->assertInstanceOf('ilMailMailingListAddressType', $this->getWrappedAddressType($result));
79 }
80
82 {
83 $group_name_validator = $this->createGroupNameAsValidatorMock();
84 $group_name_validator->method('validate')->willReturn(true);
85
86 $mail_address_type_factory = $this->getAddressTypeFactory($group_name_validator);
87
88 $result = $mail_address_type_factory->getByPrefix(new ilMailAddress('#MyGroup', ''), false);
89
90 $this->assertInstanceOf('ilMailGroupAddressType', $this->getWrappedAddressType($result));
91 }
92
94 {
95 $group_name_validator = $this->createGroupNameAsValidatorMock();
96 $group_name_validator->method('validate')->willReturn(false);
97
98 $mail_address_type_factory = $this->getAddressTypeFactory($group_name_validator);
99
100 $result = $mail_address_type_factory->getByPrefix(new ilMailAddress('phpunit', ''), false);
101
102 $this->assertInstanceOf('ilMailLoginOrEmailAddressAddressType', $this->getWrappedAddressType($result));
103 }
104
106 {
107 $group_name_validator = $this->createGroupNameAsValidatorMock();
108 $group_name_validator->method('validate')->willReturn(false);
109
110 $mail_address_type_factory = $this->getAddressTypeFactory($group_name_validator);
111
112 $result = $mail_address_type_factory->getByPrefix(new ilMailAddress('#member', ''), false);
113
114 $this->assertInstanceOf('ilMailRoleAddressType', $this->getWrappedAddressType($result));
115 }
116
118 {
119 $group_name_validator = $this->createGroupNameAsValidatorMock();
120 $group_name_validator->method('validate')->willReturn(false);
121
122 $mail_address_type_factory = $this->getAddressTypeFactory($group_name_validator);
123
124 $result = $mail_address_type_factory->getByPrefix(new ilMailAddress('#il_grp_admin_98', ''), false);
125
126 $this->assertInstanceOf('ilMailRoleAddressType', $this->getWrappedAddressType($result));
127 }
128
130 {
131 $group_name_validator = $this->createGroupNameAsValidatorMock();
132 $group_name_validator->method('validate')->willReturn(false);
133
134 $mail_address_type_factory = $this->getAddressTypeFactory($group_name_validator);
135
136 $result = $mail_address_type_factory->getByPrefix(new ilMailAddress('#il_grp_member_98', ''), false);
137
138 $this->assertInstanceOf('ilMailRoleAddressType', $this->getWrappedAddressType($result));
139 }
140
142 {
143 $group_name_validator = $this->createGroupNameAsValidatorMock();
144 $group_name_validator->method('validate')->willReturn(false);
145
146 $mail_address_type_factory = $this->getAddressTypeFactory($group_name_validator);
147
148 $result = $mail_address_type_factory->getByPrefix(new ilMailAddress('#il_crs_admin_98', ''), false);
149
150 $this->assertInstanceOf('ilMailRoleAddressType', $this->getWrappedAddressType($result));
151 }
152
154 {
155 $group_name_validator = $this->createGroupNameAsValidatorMock();
156 $group_name_validator->method('validate')->willReturn(false);
157
158 $mail_address_type_factory = $this->getAddressTypeFactory($group_name_validator);
159
160 $result = $mail_address_type_factory->getByPrefix(new ilMailAddress('#il_crs_member_98', ''), false);
161
162 $this->assertInstanceOf('ilMailRoleAddressType', $this->getWrappedAddressType($result));
163 }
164
166 {
167 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
168 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
169 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
170
171 $address_type_helper->expects($this->once())->method('getInstallationHost')->willReturn('ilias');
172 $address_type_helper->expects($this->once())->method('getUserIdByLogin')->willReturn(4711);
173
175 $address_type_helper,
176 new ilMailAddress('phpunit', 'ilias'),
177 $logger,
178 $rbacsystem
179 );
180
181 $usr_ids = $type->resolve();
182
183 $this->assertCount(1, $usr_ids);
184 $this->assertArrayHasKey(0, $usr_ids);
185 $this->assertSame(4711, $usr_ids[0]);
186 }
187
189 {
190 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
191 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
192 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
193
194 $address_type_helper->expects($this->once())->method('getInstallationHost')->willReturn('ilias');
195 $address_type_helper->expects($this->once())->method('getUserIdByLogin')->willReturn(0);
196
198 $address_type_helper,
199 new ilMailAddress('phpunit', 'ilias'),
200 $logger,
201 $rbacsystem
202 );
203
204 $usr_ids = $type->resolve();
205
206 $this->assertCount(0, $usr_ids);
207 }
208
210 {
211 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
212 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
213 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
214
215 $address_type_helper->expects($this->once())->method('getInstallationHost')->willReturn('ilias');
216 $address_type_helper->expects($this->once())->method('getUserIdByLogin')->willReturn(0);
217
219 $address_type_helper,
220 new ilMailAddress('mjansen', 'databay.de'),
221 $logger,
222 $rbacsystem
223 );
224
225 $usr_ids = $type->resolve();
226
227 $this->assertCount(0, $usr_ids);
228 }
229
231 {
232 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
233 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
234
235 $address_type_helper->expects($this->atLeast(3))->method('getInstallationHost')->willReturn('ilias');
236 $address_type_helper->expects($this->exactly(2))->method('getUserIdByLogin')->willReturnOnConsecutiveCalls(
237 4711,
238 4711,
239 0
240 );
241
242 $address_type_helper->method('receivesInternalMailsOnly')->willReturn(true);
243
244 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
245 $rbacsystem->expects($this->exactly(2))->method('checkAccessOfUser')->willReturnOnConsecutiveCalls(
246 true,
247 false
248 );
249
251 $address_type_helper,
252 new ilMailAddress('phpunit', 'ilias'),
253 $logger,
254 $rbacsystem
255 );
256 $this->assertTrue($type->validate(666));
257 $this->assertCount(0, $type->getErrors());
258
259 $this->assertFalse($type->validate(666));
260 $this->assertArrayHasKey(0, $type->getErrors());
261 $this->assertSame('user_cant_receive_mail', $type->getErrors()[0]->getLanguageVariable());
262
264 $address_type_helper,
265 new ilMailAddress('mjansen', 'databay.de'),
266 $logger,
267 $rbacsystem
268 );
269 $this->assertTrue($type->validate(666));
270 $this->assertCount(0, $type->getErrors());
271 }
272
274 {
275 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
276 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
277
278 $group = $this->getMockBuilder(ilObjGroup::class)->disableOriginalConstructor()->onlyMethods(['getGroupMemberIds'])->getMock();
279 $group->expects($this->once())->method('getGroupMemberIds')->willReturn([666, 777]);
280
281 $address_type_helper->expects($this->once())->method('getGroupObjIdByTitle')->willReturn(1);
282 $address_type_helper->expects($this->once())->method('getAllRefIdsForObjId')->with(1)->willReturn([2]);
283 $address_type_helper->expects($this->once())->method('getInstanceByRefId')->with(2)->willReturn($group);
284
285 $type = new ilMailGroupAddressType(
286 $address_type_helper,
287 new ilMailAddress('#PhpUnit', ''),
288 $logger
289 );
290
291 $usr_ids = $type->resolve();
292
293 $this->assertCount(2, $usr_ids);
294 }
295
297 {
298 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
299 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
300
301 $group = $this->getMockBuilder(ilObjGroup::class)->disableOriginalConstructor()->onlyMethods(['getGroupMemberIds'])->getMock();
302 $group->expects($this->never())->method('getGroupMemberIds');
303
304 $address_type_helper->expects($this->once())->method('getGroupObjIdByTitle')->willReturn(0);
305 $address_type_helper->expects($this->once())->method('getAllRefIdsForObjId')->with(0)->willReturn([]);
306 $address_type_helper->expects($this->never())->method('getInstanceByRefId');
307
308 $type = new ilMailGroupAddressType(
309 $address_type_helper,
310 new ilMailAddress('#PhpUnit', ''),
311 $logger
312 );
313
314 $usr_ids = $type->resolve();
315
316 $this->assertCount(0, $usr_ids);
317 }
318
320 {
321 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
322 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
323
324 $address_type_helper->expects($this->once())->method('doesGroupNameExists')->with('PhpUnit')->willReturn(false);
325
326 $type = new ilMailGroupAddressType(
327 $address_type_helper,
328 new ilMailAddress('#PhpUnit', ''),
329 $logger
330 );
331 $this->assertFalse($type->validate(666));
332 }
333
335 {
336 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
337 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
338
339 $address_type_helper->expects($this->once())->method('doesGroupNameExists')->with('PhpUnit')->willReturn(true);
340
341 $type = new ilMailGroupAddressType(
342 $address_type_helper,
343 new ilMailAddress('#PhpUnit', ''),
344 $logger
345 );
346 $this->assertTrue($type->validate(666));
347 }
348
350 {
351 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
352 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
353
354 $list = $this->getMockBuilder(ilMailingList::class)->disableOriginalConstructor()->onlyMethods([
355 'getAssignedEntries',
356 ])->getMock();
357 $list->expects($this->exactly(2))->method('getAssignedEntries')->willReturnOnConsecutiveCalls(
358 [['usr_id' => 1], ['usr_id' => 2], ['usr_id' => 3]],
359 []
360 );
361
362 $lists = $this->getMockBuilder(ilMailingLists::class)->disableOriginalConstructor()->onlyMethods([
363 'mailingListExists',
364 'getCurrentMailingList',
365 ])->getMock();
366 $lists->expects($this->exactly(3))->method('mailingListExists')->with('#il_ml_4711')->willReturnOnConsecutiveCalls(
367 true,
368 true,
369 false
370 );
371 $lists->expects($this->exactly(2))->method('getCurrentMailingList')->willReturn($list);
372
374 $address_type_helper,
375 new ilMailAddress('#il_ml_4711', ''),
376 $logger,
377 $lists
378 );
379
380 $usr_ids = $type->resolve();
381
382 $this->assertCount(3, $usr_ids);
383
384 $usr_ids = $type->resolve();
385
386 $this->assertCount(0, $usr_ids);
387
388 $usr_ids = $type->resolve();
389
390 $this->assertCount(0, $usr_ids);
391 }
392
394 {
395 $lists = $this->getMockBuilder(ilMailingLists::class)->disableOriginalConstructor()->onlyMethods([
396 'mailingListExists',
397 ])->getMock();
398 $lists->expects($this->exactly(2))->method('mailingListExists')->with('#il_ml_4711')->willReturnOnConsecutiveCalls(
399 true,
400 false
401 );
402 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
403 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
404
406 $address_type_helper,
407 new ilMailAddress('#il_ml_4711', ''),
408 $logger,
409 $lists
410 );
411
412 $this->assertTrue($type->validate(666));
413 $this->assertCount(0, $type->getErrors());
414
415 $this->assertFalse($type->validate(666));
416 $this->assertCount(1, $type->getErrors());
417 $this->assertArrayHasKey(0, $type->getErrors());
418 $this->assertSame('mail_no_valid_mailing_list', $type->getErrors()[0]->getLanguageVariable());
419 }
420
422 {
423 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
424 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
425 $rbacreview = $this->getMockBuilder(ilRbacReview::class)->disableOriginalConstructor()->onlyMethods(['assignedUsers'])->getMock();
426 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
427 $role_mailbox_search = $this->getMockBuilder(ilRoleMailboxSearch::class)->disableOriginalConstructor()->onlyMethods(['searchRoleIdsByAddressString'])->getMock();
428
429 $role_mailbox_search->expects($this->once())->method('searchRoleIdsByAddressString')->willReturn([1, 2, 3]);
430 $rbacreview->expects($this->exactly(3))->method('assignedUsers')->willReturnOnConsecutiveCalls(
431 [4, 5, 6],
432 [7, 8],
433 [9]
434 );
435
436 $type = new ilMailRoleAddressType(
437 $address_type_helper,
438 new ilMailAddress('phpunit', 'ilias'),
439 $role_mailbox_search,
440 $logger,
441 $rbacsystem,
442 $rbacreview
443 );
444
445 $usr_ids = $type->resolve();
446
447 $this->assertCount(6, $usr_ids);
448 }
449
451 {
452 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
453 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
454 $rbacreview = $this->getMockBuilder(ilRbacReview::class)->disableOriginalConstructor()->onlyMethods(['assignedUsers'])->getMock();
455 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
456 $role_mailbox_search = $this->getMockBuilder(ilRoleMailboxSearch::class)->disableOriginalConstructor()->onlyMethods(['searchRoleIdsByAddressString'])->getMock();
457
458 $role_mailbox_search->expects($this->once())->method('searchRoleIdsByAddressString')->willReturn([]);
459 $rbacreview->expects($this->never())->method('assignedUsers');
460
461 $type = new ilMailRoleAddressType(
462 $address_type_helper,
463 new ilMailAddress('phpunit', 'ilias'),
464 $role_mailbox_search,
465 $logger,
466 $rbacsystem,
467 $rbacreview
468 );
469
470 $usr_ids = $type->resolve();
471
472 $this->assertCount(0, $usr_ids);
473 }
474
476 {
477 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
478 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
479 $rbacreview = $this->getMockBuilder(ilRbacReview::class)->disableOriginalConstructor()->onlyMethods(['assignedUsers'])->getMock();
480 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
481 $role_mailbox_search = $this->getMockBuilder(ilRoleMailboxSearch::class)->disableOriginalConstructor()->onlyMethods(['searchRoleIdsByAddressString'])->getMock();
482
483 $role_mailbox_search->expects($this->once())->method('searchRoleIdsByAddressString')->willReturn([1]);
484 $rbacreview->expects($this->once())->method('assignedUsers')->willReturn([]);
485
486 $type = new ilMailRoleAddressType(
487 $address_type_helper,
488 new ilMailAddress('phpunit', 'ilias'),
489 $role_mailbox_search,
490 $logger,
491 $rbacsystem,
492 $rbacreview
493 );
494
495 $usr_ids = $type->resolve();
496
497 $this->assertCount(0, $usr_ids);
498 }
499
501 {
502 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
503 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
504 $rbacreview = $this->getMockBuilder(ilRbacReview::class)->disableOriginalConstructor()->getMock();
505 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
506 $role_mailbox_search = $this->getMockBuilder(ilRoleMailboxSearch::class)->disableOriginalConstructor()->onlyMethods(['searchRoleIdsByAddressString'])->getMock();
507
508 $role_mailbox_search->expects($this->once())->method('searchRoleIdsByAddressString')->willReturnOnConsecutiveCalls([1]);
509 $rbacsystem->expects($this->never())->method('checkAccessOfUser');
510
511 $type = new ilMailRoleAddressType(
512 $address_type_helper,
513 new ilMailAddress('phpunit', 'ilias'),
514 $role_mailbox_search,
515 $logger,
516 $rbacsystem,
517 $rbacreview
518 );
519
520 $this->assertTrue($type->validate(ANONYMOUS_USER_ID));
521 $this->assertCount(0, $type->getErrors());
522 }
523
525 {
526 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
527 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->onlyMethods(['checkAccessOfUser'])->getMock();
528 $rbacreview = $this->getMockBuilder(ilRbacReview::class)->disableOriginalConstructor()->onlyMethods(['isGlobalRole'])->getMock();
529 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
530 $role_mailbox_search = $this->getMockBuilder(ilRoleMailboxSearch::class)->disableOriginalConstructor()->onlyMethods(['searchRoleIdsByAddressString'])->getMock();
531
532 $role_mailbox_search->expects($this->exactly(4))->method('searchRoleIdsByAddressString')->willReturnOnConsecutiveCalls(
533 [1],
534 [],
535 [1, 2],
536 [1]
537 );
538 $rbacsystem->expects($this->exactly(4))->method('checkAccessOfUser')->willReturnOnConsecutiveCalls(
539 false,
540 true,
541 true,
542 true
543 );
544 $rbacreview->expects($this->once())->method('isGlobalRole')->with(1)->willReturn(true);
545
546 $type = new ilMailRoleAddressType(
547 $address_type_helper,
548 new ilMailAddress('phpunit', 'ilias'),
549 $role_mailbox_search,
550 $logger,
551 $rbacsystem,
552 $rbacreview
553 );
554
555 $this->assertFalse($type->validate(4711));
556 $this->assertCount(1, $type->getErrors());
557 $this->assertArrayHasKey(0, $type->getErrors());
558 $this->assertSame('mail_to_global_roles_not_allowed', $type->getErrors()[0]->getLanguageVariable());
559
560 $this->assertFalse($type->validate(4711));
561 $this->assertCount(1, $type->getErrors());
562 $this->assertArrayHasKey(0, $type->getErrors());
563 $this->assertSame('mail_recipient_not_found', $type->getErrors()[0]->getLanguageVariable());
564
565 $this->assertFalse($type->validate(4711));
566 $this->assertCount(1, $type->getErrors());
567 $this->assertArrayHasKey(0, $type->getErrors());
568 $this->assertSame('mail_multiple_role_recipients_found', $type->getErrors()[0]->getLanguageVariable());
569
570 $this->assertTrue($type->validate(4711));
571 $this->assertCount(0, $type->getErrors());
572 }
573
575 {
576 $origin = $this->getMockBuilder(ilMailAddressType::class)->getMock();
577
578 $origin->expects($this->once())->method('resolve');
579 $origin->expects($this->once())->method('validate');
580
581 $type = new ilMailCachedAddressType($origin, true);
582 $type->resolve();
583 $type->resolve();
584
585 $type->validate(6);
586 $type->validate(6);
587 }
588
590 {
591 $origin = $this->getMockBuilder(ilMailAddressType::class)->getMock();
592
593 $origin->expects($this->exactly(3))->method('resolve');
594 $origin->expects($this->exactly(3))->method('validate');
595
596 $type = new ilMailCachedAddressType($origin, false);
597 $type->resolve();
598 $type->resolve();
599 $type->resolve();
600
601 $type->validate(6);
602 $type->validate(6);
603 $type->validate(6);
604 }
605}
getWrappedAddressType(ilMailAddressType $type)
testNoUserIdsCanBeResolvedFromRoleAddressWithoutAnyUsersBeingAssinged()
getAddressTypeFactory(ilGroupNameAsMailValidator $group_name_validator)
testCacheOnlyResolvesAndValidatesRecipientsOnceIfCachingIsEnabled()
testCacheResolvesAndValidatesRecipientsOnEveryCallIfCachingIsDisabled()
testValidationForAnonymousUserAsSystemActorSucceedsAlwaysForGlobalRoleAddresses()
testPermissionsAreCheckedForRegularUsersWhenValidatingGlobalRoleAddresses()
const ANONYMOUS_USER_ID
Definition: constants.php:27