ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
ilMailTest Class Reference

Class ilMailMimeTest. More...

+ Inheritance diagram for ilMailTest:
+ Collaboration diagram for ilMailTest:

Public Member Functions

 testExternalMailDeliveryToLocalRecipientsWorksAsExpected ()
 

Protected Member Functions

 setUp ()
 
- Protected Member Functions inherited from ilMailBaseTest
 setUp ()
 
 setGlobalVariable (string $name, $value)
 

Detailed Description

Class ilMailMimeTest.

Author
Michael Jansen mjans.nosp@m.en@d.nosp@m.ataba.nosp@m.y.de

Definition at line 9 of file ilMailTest.php.

Member Function Documentation

◆ setUp()

ilMailTest::setUp ( )
protected

Definition at line 14 of file ilMailTest.php.

14  : void
15  {
16  parent::setUp();
17  }

◆ testExternalMailDeliveryToLocalRecipientsWorksAsExpected()

ilMailTest::testExternalMailDeliveryToLocalRecipientsWorksAsExpected ( )
Exceptions
ReflectionException

Definition at line 22 of file ilMailTest.php.

References $lng, $login, ILIAS\GlobalScreen\Provider\__construct(), ilMailMimeSenderUserById\addUserToCache(), ilMimeMail\getBcc(), ilMimeMail\getDefaultTransport(), ilMailOptions\INCOMING_EMAIL, ilMimeMail\setDefaultTransport(), and ilMailBaseTest\setGlobalVariable().

22  : void
23  {
24  $senderUsrId = 666;
25  $loginToIdMap = [
26  'phpunit1' => 1,
27  'phpunit2' => 2,
28  'phpunit3' => 3,
29  'phpunit4' => 4,
30  'phpunit5' => 5,
31  'phpunit6' => 6,
32  'phpunit7' => 7,
33  ];
34  $userInstanceById = [];
35  $mailOptionsById = [];
36  foreach ($loginToIdMap as $login => $usrId) {
37  $user = $this
38  ->getMockBuilder(ilObjUser::class)
39  ->disableOriginalConstructor()
40  ->onlyMethods(['getId', 'hasToAcceptTermsOfService', 'checkTimeLimit', 'getActive'])
41  ->getMock();
42  $user->expects($this->any())->method('getId')->willReturn($usrId);
43  $user->expects($this->any())->method('getActive')->willReturn(true);
44  $user->expects($this->any())->method('hasToAcceptTermsOfService')->willReturn(false);
45  $user->expects($this->any())->method('checkTimeLimit')->willReturn(true);
46  $userInstanceById[$usrId] = $user;
47 
48  $mailOptions = $this
49  ->getMockBuilder(ilMailOptions::class)
50  ->disableOriginalConstructor()
51  ->onlyMethods(['getExternalEmailAddresses', 'getIncomingType'])
52  ->getMock();
53  $mailOptions->expects($this->any())->method('getExternalEmailAddresses')->willReturn([
54  'phpunit' . $usrId . '@ilias.de',
55  ]);
56  $mailOptions->expects($this->any())->method('getIncomingType')->willReturn(ilMailOptions::INCOMING_EMAIL);
57  $mailOptionsById[$usrId] = $mailOptions;
58  }
59 
60  $user = $this->getMockBuilder(ilObjUser::class)->disableOriginalConstructor()->getMock();
62 
63  $addressTypeFactory = $this
64  ->getMockBuilder(ilMailAddressTypeFactory::class)
65  ->disableOriginalConstructor()
66  ->onlyMethods(['getByPrefix'])
67  ->getMock();
68  $addressTypeFactory->expects($this->any())
69  ->method('getByPrefix')
70  ->will($this->returnCallback(function ($arg) use ($loginToIdMap) {
71  return new class($arg, $loginToIdMap) implements ilMailAddressType {
72  protected $loginToIdMap = [];
73  protected $address;
74 
75  public function __construct(ilMailAddress $address, $loginToIdMap)
76  {
77  $this->address = $address;
78  $this->loginToIdMap = array_map(function ($usrId) {
79  return [$usrId];
80  }, $loginToIdMap);
81  }
82 
83  public function resolve() : array
84  {
85  return $this->loginToIdMap[$this->address->getMailbox()] ?? [];
86  }
87 
88  public function validate(int $senderId) : bool
89  {
90  return true;
91  }
92 
93  public function getErrors() : array
94  {
95  return [];
96  }
97 
98  public function getAddress() : ilMailAddress
99  {
100  return $this->address;
101  }
102  };
103  }));
104 
105  $db = $this->getMockBuilder(ilDBInterface::class)->getMock();
106  $nextId = 0;
107  $db->expects($this->any())->method('nextId')->will($this->returnCallback(function () use (&$nextId) {
108  ++$nextId;
109 
110  return $nextId;
111  }));
112 
113  $eventHandler = $this->getMockBuilder(ilAppEventHandler::class)->disableOriginalConstructor()->getMock();
114  $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
115  $lng = $this->getMockBuilder(ilLanguage::class)->disableOriginalConstructor()->getMock();
116  $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->getMock();
117  $this->setGlobalVariable('ilSetting', $settings);
118 
119  $mailFileData = $this->getMockBuilder(ilFileDataMail::class)->disableOriginalConstructor()->getMock();
120  $mailOptions = $this->getMockBuilder(ilMailOptions::class)->disableOriginalConstructor()->getMock();
121  $mailBox = $this->getMockBuilder(ilMailbox::class)->disableOriginalConstructor()->getMock();
122 
123  $mailService = new ilMail(
124  $senderUsrId,
125  $addressTypeFactory,
127  $eventHandler,
128  $logger,
129  $db,
130  $lng,
131  $mailFileData,
132  $mailOptions,
133  $mailBox,
135  function (string $login) use ($loginToIdMap) {
136  return $loginToIdMap[$login] ?? 0;
137  },
138  4711
139  );
140 
141  $oldTransport = ilMimeMail::getDefaultTransport();
142 
143  $mailTransport = $this
144  ->getMockBuilder(ilMailMimeTransport::class)
145  ->getMock();
146  $mailTransport->expects($this->exactly(1))->method('send')->with($this->callback(function (
147  ilMimeMail $mailer
148  ) use ($loginToIdMap) {
149  $totalBcc = [];
150  foreach ($mailer->getBcc() as $bcc) {
151  $totalBcc = array_filter(array_map('trim', explode(',', $bcc))) + $totalBcc;
152  }
153 
154  return count($totalBcc) === count($loginToIdMap);
155  }))->willReturn(true);
156  ilMimeMail::setDefaultTransport($mailTransport);
157 
158  $mailService->setUserInstanceById($userInstanceById);
159  $mailService->setMailOptionsByUserIdMap($mailOptionsById);
160 
161  $mailService->sendMail(
162  implode(',', array_slice(array_keys($loginToIdMap), 0, 3)),
163  implode(',', array_slice(array_keys($loginToIdMap), 3, 2)),
164  implode(',', array_slice(array_keys($loginToIdMap), 5, 2)),
165  'Subject',
166  'Message',
167  [],
168  false
169  );
170 
171  ilMimeMail::setDefaultTransport($oldTransport);
172  }
$login
Definition: cron.php:13
static addUserToCache(int $usrId, ilObjUser $user)
Class ilMailMimeSenderFactory.
static setDefaultTransport(?ilMailMimeTransport $transport)
static getDefaultTransport()
Interface ilMailAddressType.
Class ilMailRfc822AddressParserFactory.
setGlobalVariable(string $name, $value)
Class ilMimeMail.
$lng
__construct(Container $dic, ilPlugin $plugin)
Class ilMailAddress.
+ Here is the call graph for this function:

The documentation for this class was generated from the following file: