ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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 $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
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
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
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
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}
getWrappedAddressType(ilMailAddressType $type)
testNoUserIdsCanBeResolvedFromRoleAddressWithoutAnyUsersBeingAssinged()
getAddressTypeFactory(ilGroupNameAsMailValidator $group_name_validator)
testCacheOnlyResolvesAndValidatesRecipientsOnceIfCachingIsEnabled()
testCacheResolvesAndValidatesRecipientsOnEveryCallIfCachingIsDisabled()
testValidationForAnonymousUserAsSystemActorSucceedsAlwaysForGlobalRoleAddresses()
testPermissionsAreCheckedForRegularUsersWhenValidatingGlobalRoleAddresses()
const ANONYMOUS_USER_ID
Definition: constants.php:27