19declare(strict_types=1);
23 protected function setUp(): void
31 return $this->getMockBuilder(ilGroupNameAsMailValidator::class)
32 ->disableOriginalConstructor()
33 ->onlyMethods([
'validate'])
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();
47 $group_name_validator,
60 $refl =
new ReflectionObject($type);
61 $inner = $refl->getProperty(
'inner');
63 return $inner->getValue($type);
72 $group_name_validator->method(
'validate')->willReturn(
true);
76 $result = $mail_address_type_factory->getByPrefix(
new ilMailAddress(
'#il_ml_4711',
''),
false);
84 $group_name_validator->method(
'validate')->willReturn(
true);
88 $result = $mail_address_type_factory->getByPrefix(
new ilMailAddress(
'#MyGroup',
''),
false);
96 $group_name_validator->method(
'validate')->willReturn(
false);
100 $result = $mail_address_type_factory->getByPrefix(
new ilMailAddress(
'phpunit',
''),
false);
102 $this->assertInstanceOf(
'ilMailLoginOrEmailAddressAddressType', $this->
getWrappedAddressType($result));
108 $group_name_validator->method(
'validate')->willReturn(
false);
112 $result = $mail_address_type_factory->getByPrefix(
new ilMailAddress(
'#member',
''),
false);
120 $group_name_validator->method(
'validate')->willReturn(
false);
124 $result = $mail_address_type_factory->getByPrefix(
new ilMailAddress(
'#il_grp_admin_98',
''),
false);
132 $group_name_validator->method(
'validate')->willReturn(
false);
136 $result = $mail_address_type_factory->getByPrefix(
new ilMailAddress(
'#il_grp_member_98',
''),
false);
144 $group_name_validator->method(
'validate')->willReturn(
false);
148 $result = $mail_address_type_factory->getByPrefix(
new ilMailAddress(
'#il_crs_admin_98',
''),
false);
156 $group_name_validator->method(
'validate')->willReturn(
false);
160 $result = $mail_address_type_factory->getByPrefix(
new ilMailAddress(
'#il_crs_member_98',
''),
false);
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();
171 $address_type_helper->expects($this->once())->method(
'getInstallationHost')->willReturn(
'ilias');
172 $address_type_helper->expects($this->once())->method(
'getUserIdByLogin')->willReturn(4711);
175 $address_type_helper,
181 $usr_ids = $type->resolve();
183 $this->assertCount(1, $usr_ids);
184 $this->assertArrayHasKey(0, $usr_ids);
185 $this->assertSame(4711, $usr_ids[0]);
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();
194 $address_type_helper->expects($this->once())->method(
'getInstallationHost')->willReturn(
'ilias');
195 $address_type_helper->expects($this->once())->method(
'getUserIdByLogin')->willReturn(0);
198 $address_type_helper,
204 $usr_ids = $type->resolve();
206 $this->assertCount(0, $usr_ids);
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();
215 $address_type_helper->expects($this->once())->method(
'getInstallationHost')->willReturn(
'ilias');
216 $address_type_helper->expects($this->once())->method(
'getUserIdByLogin')->willReturn(0);
219 $address_type_helper,
225 $usr_ids = $type->resolve();
227 $this->assertCount(0, $usr_ids);
232 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
233 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
235 $address_type_helper->expects($this->atLeast(3))->method(
'getInstallationHost')->willReturn(
'ilias');
236 $address_type_helper->expects($this->exactly(2))->method(
'getUserIdByLogin')->willReturnOnConsecutiveCalls(
242 $address_type_helper->method(
'receivesInternalMailsOnly')->willReturn(
true);
244 $rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
245 $rbacsystem->expects($this->exactly(2))->method(
'checkAccessOfUser')->willReturnOnConsecutiveCalls(
251 $address_type_helper,
256 $this->assertTrue($type->validate(666));
257 $this->assertCount(0, $type->getErrors());
259 $this->assertFalse($type->validate(666));
260 $this->assertArrayHasKey(0, $type->getErrors());
261 $this->assertSame(
'user_cant_receive_mail', $type->getErrors()[0]->getLanguageVariable());
264 $address_type_helper,
269 $this->assertTrue($type->validate(666));
270 $this->assertCount(0, $type->getErrors());
275 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
276 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
278 $group = $this->getMockBuilder(ilObjGroup::class)->disableOriginalConstructor()->onlyMethods([
'getGroupMemberIds'])->getMock();
279 $group->expects($this->once())->method(
'getGroupMemberIds')->willReturn([666, 777]);
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);
286 $address_type_helper,
291 $usr_ids = $type->resolve();
293 $this->assertCount(2, $usr_ids);
298 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
299 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
301 $group = $this->getMockBuilder(ilObjGroup::class)->disableOriginalConstructor()->onlyMethods([
'getGroupMemberIds'])->getMock();
302 $group->expects($this->never())->method(
'getGroupMemberIds');
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');
309 $address_type_helper,
314 $usr_ids = $type->resolve();
316 $this->assertCount(0, $usr_ids);
321 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
322 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
324 $address_type_helper->expects($this->once())->method(
'doesGroupNameExists')->with(
'PhpUnit')->willReturn(
false);
327 $address_type_helper,
331 $this->assertFalse($type->validate(666));
336 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
337 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
339 $address_type_helper->expects($this->once())->method(
'doesGroupNameExists')->with(
'PhpUnit')->willReturn(
true);
342 $address_type_helper,
346 $this->assertTrue($type->validate(666));
351 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
352 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
354 $list = $this->getMockBuilder(ilMailingList::class)->disableOriginalConstructor()->onlyMethods([
355 'getAssignedEntries',
357 $list->expects($this->exactly(2))->method(
'getAssignedEntries')->willReturnOnConsecutiveCalls(
358 [[
'usr_id' => 1], [
'usr_id' => 2], [
'usr_id' => 3]],
362 $lists = $this->getMockBuilder(ilMailingLists::class)->disableOriginalConstructor()->onlyMethods([
364 'getCurrentMailingList',
366 $lists->expects($this->exactly(3))->method(
'mailingListExists')->with(
'#il_ml_4711')->willReturnOnConsecutiveCalls(
371 $lists->expects($this->exactly(2))->method(
'getCurrentMailingList')->willReturn($list);
374 $address_type_helper,
380 $usr_ids = $type->resolve();
382 $this->assertCount(3, $usr_ids);
384 $usr_ids = $type->resolve();
386 $this->assertCount(0, $usr_ids);
388 $usr_ids = $type->resolve();
390 $this->assertCount(0, $usr_ids);
395 $lists = $this->getMockBuilder(ilMailingLists::class)->disableOriginalConstructor()->onlyMethods([
398 $lists->expects($this->exactly(2))->method(
'mailingListExists')->with(
'#il_ml_4711')->willReturnOnConsecutiveCalls(
402 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
403 $address_type_helper = $this->getMockBuilder(ilMailAddressTypeHelper::class)->getMock();
406 $address_type_helper,
412 $this->assertTrue($type->validate(666));
413 $this->assertCount(0, $type->getErrors());
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());
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();
429 $role_mailbox_search->expects($this->once())->method(
'searchRoleIdsByAddressString')->willReturn([1, 2, 3]);
430 $rbacreview->expects($this->exactly(3))->method(
'assignedUsers')->willReturnOnConsecutiveCalls(
437 $address_type_helper,
439 $role_mailbox_search,
445 $usr_ids = $type->resolve();
447 $this->assertCount(6, $usr_ids);
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();
458 $role_mailbox_search->expects($this->once())->method(
'searchRoleIdsByAddressString')->willReturn([]);
459 $rbacreview->expects($this->never())->method(
'assignedUsers');
462 $address_type_helper,
464 $role_mailbox_search,
470 $usr_ids = $type->resolve();
472 $this->assertCount(0, $usr_ids);
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();
483 $role_mailbox_search->expects($this->once())->method(
'searchRoleIdsByAddressString')->willReturn([1]);
484 $rbacreview->expects($this->once())->method(
'assignedUsers')->willReturn([]);
487 $address_type_helper,
489 $role_mailbox_search,
495 $usr_ids = $type->resolve();
497 $this->assertCount(0, $usr_ids);
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();
508 $role_mailbox_search->expects($this->once())->method(
'searchRoleIdsByAddressString')->willReturnOnConsecutiveCalls([1]);
509 $rbacsystem->expects($this->never())->method(
'checkAccessOfUser');
512 $address_type_helper,
514 $role_mailbox_search,
521 $this->assertCount(0, $type->getErrors());
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();
532 $role_mailbox_search->expects($this->exactly(4))->method(
'searchRoleIdsByAddressString')->willReturnOnConsecutiveCalls(
538 $rbacsystem->expects($this->exactly(4))->method(
'checkAccessOfUser')->willReturnOnConsecutiveCalls(
544 $rbacreview->expects($this->once())->method(
'isGlobalRole')->with(1)->willReturn(
true);
547 $address_type_helper,
549 $role_mailbox_search,
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());
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());
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());
570 $this->assertTrue($type->validate(4711));
571 $this->assertCount(0, $type->getErrors());
576 $origin = $this->getMockBuilder(ilMailAddressType::class)->getMock();
578 $origin->expects($this->once())->method(
'resolve');
579 $origin->expects($this->once())->method(
'validate');
591 $origin = $this->getMockBuilder(ilMailAddressType::class)->getMock();
593 $origin->expects($this->exactly(3))->method(
'resolve');
594 $origin->expects($this->exactly(3))->method(
'validate');
testNoUserIdsCanBeResolvedFromInvalidRoleAddress()
testUserIdsCanBeResolvedFromGroupNameAddress()
testFactoryWillReturnRoleAddressType()
getWrappedAddressType(ilMailAddressType $type)
testNoUserIdsCanBeResolvedFromRoleAddressWithoutAnyUsersBeingAssinged()
testMemberGroupNameIsAValidMailAddressType()
testUserIdsCannotBeResolvedFromNonExistingGroupNameAddress()
getAddressTypeFactory(ilGroupNameAsMailValidator $group_name_validator)
testValidationSucceedsForExistingGroupName()
testAdminCourseNameIsAValidMailAddressType()
testCacheOnlyResolvesAndValidatesRecipientsOnceIfCachingIsEnabled()
testFactoryWillReturnLoginOrEmailAddressAddressType()
testValidationFailsForNonExistingGroupNameAddress()
testNoUserIdCanBeResolvedFromUnknownLoginAddress()
testMailingListAddressCanBeValidated()
testCacheResolvesAndValidatesRecipientsOnEveryCallIfCachingIsDisabled()
testNoUserIdCanBeResolvedFromEmailAddress()
testValidationForAnonymousUserAsSystemActorSucceedsAlwaysForGlobalRoleAddresses()
testFactoryWillReturnListAddressTypeForListName()
testAddressCanBeValidatedFromLoginOrEmailAddressType()
testAdminGroupNameIsAValidMailAddressTypes()
testUserIdCanBeResolvedFromLoginAddress()
testFactoryWillReturnGroupAddressTypeForGroupName()
testUserIdsCanBeResolvedFromRoleAddress()
testPermissionsAreCheckedForRegularUsersWhenValidatingGlobalRoleAddresses()
testUserIdsCanBeResolvedFromMailingListAddress()
createGroupNameAsValidatorMock()
testMemberCourseNameIsAValidMailAddressType()