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