ILIAS  release_8 Revision v8.24
ilMailMimeTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
28{
29 private const USER_ID = 6;
30
31 protected function setUp(): void
32 {
34 ilMailMimeSenderUserById::addUserToCache(self::USER_ID, $this->getUserById(self::USER_ID));
35
36 parent::setUp();
37 }
38
43 {
44 $defaultTransport = $this->getMockBuilder(ilMailMimeTransport::class)->disableOriginalConstructor()->getMock();
45 $defaultTransport->expects($this->never())->method('send');
46
47 $transport = $this->getMockBuilder(ilMailMimeTransport::class)->getMock();
48 $transport->expects($this->once())->method('send');
49
50 $transportFactory = $this->getMockBuilder(ilMailMimeTransportFactory::class)->disableOriginalConstructor()->getMock();
51 $transportFactory->method('getTransport')->willReturn($defaultTransport);
52 $this->setGlobalVariable('mail.mime.transport.factory', $transportFactory);
53
54 $refineryMock = $this->getMockBuilder(Factory::class)->disableOriginalConstructor()->getMock();
55 $this->setGlobalVariable('refinery', $refineryMock);
56
57 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
58 'set',
59 'get',
60 ])->getMock();
61 $this->setGlobalVariable('ilSetting', $settings);
62
63 $mail = new ilMimeMail();
64 $mail->Send($transport);
65 }
66
71 {
72 $defaultTransport = $this->getMockBuilder(ilMailMimeTransport::class)->getMock();
73 $defaultTransport->expects($this->once())->method('send');
74
75 $transportFactory = $this->getMockBuilder(ilMailMimeTransportFactory::class)->disableOriginalConstructor()->getMock();
76 $transportFactory->method('getTransport')->willReturn($defaultTransport);
77 $this->setGlobalVariable('mail.mime.transport.factory', $transportFactory);
78
79 $refineryMock = $this->getMockBuilder(Factory::class)->disableOriginalConstructor()->getMock();
80 $this->setGlobalVariable('refinery', $refineryMock);
81
82 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
83 'set',
84 'get',
85 ])->getMock();
86 $this->setGlobalVariable('ilSetting', $settings);
87
88 $mail = new ilMimeMail();
89 $mail->Send();
90 }
91
96 {
97 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
98 'set',
99 'get',
100 ])->getMock();
101 $settings->method('get')->willReturnCallback(static function ($key): ?string {
102 return (string) !('mail_allow_external' === $key);
103 });
104 $this->setGlobalVariable('ilSetting', $settings);
105
106 $eventHandler = $this->getMockBuilder(ilAppEventHandler::class)->disableOriginalConstructor()->onlyMethods([
107 'raise',
108 ])->getMock();
109
110 $factory = new ilMailMimeTransportFactory($settings, $eventHandler);
111 $this->assertInstanceOf(ilMailMimeTransportNull::class, $factory->getTransport());
112 }
113
118 {
119 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
120 'set',
121 'get',
122 ])->getMock();
123 $settings->method('get')->willReturnCallback(static function ($key): ?string {
124 if ('mail_allow_external' === $key) {
125 return '1';
126 }
127
128
129 return '1';
130 });
131 $this->setGlobalVariable('ilSetting', $settings);
132
133 $eventHandler = $this->getMockBuilder(ilAppEventHandler::class)->disableOriginalConstructor()->onlyMethods([
134 'raise',
135 ])->getMock();
136
137 $factory = new ilMailMimeTransportFactory($settings, $eventHandler);
138 $this->assertInstanceOf(ilMailMimeTransportSmtp::class, $factory->getTransport());
139 }
140
145 {
146 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
147 'set',
148 'get',
149 ])->getMock();
150
151 $settings->method('get')->willReturnCallback(static function ($key): ?string {
152 if ('mail_allow_external' === $key) {
153 return '1';
154 }
155
156
157 if ('mail_smtp_status' === $key) {
158 return '0';
159 }
160
161 return '1';
162 });
163 $this->setGlobalVariable('ilSetting', $settings);
164
165 $eventHandler = $this->getMockBuilder(ilAppEventHandler::class)->disableOriginalConstructor()->onlyMethods([
166 'raise',
167 ])->getMock();
168
169 $factory = new ilMailMimeTransportFactory($settings, $eventHandler);
170 $this->assertInstanceOf(ilMailMimeTransportSendmail::class, $factory->getTransport());
171 }
172
177 {
178 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
179 'set',
180 'get',
181 ])->getMock();
182
184 $this->assertInstanceOf(ilMailMimeSenderSystem::class, $factory->getSenderByUsrId(ANONYMOUS_USER_ID));
185 }
186
191 {
192 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
193 'set',
194 'get',
195 ])->getMock();
196
198 $this->assertInstanceOf(ilMailMimeSenderSystem::class, $factory->system());
199 }
200
204 protected function getUserById(int $usrId): ilObjUser
205 {
206 $user = $this->getMockBuilder(ilObjUser::class)
207 ->disableOriginalConstructor()
208 ->onlyMethods(['getId'])
209 ->getMock();
210 $user->method('getId')->willReturn($usrId);
211
212 return $user;
213 }
214
219 {
220 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
221 'set',
222 'get',
223 ])->getMock();
224
226 $this->assertInstanceOf(ilMailMimeSenderUser::class, $factory->getSenderByUsrId(self::USER_ID));
227 }
228
233 {
234 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
235 'set',
236 'get',
237 ])->getMock();
238
240 $this->assertInstanceOf(ilMailMimeSenderUser::class, $factory->user(self::USER_ID));
241 }
242}
Builds data types.
Definition: Factory.php:21
Class ilMailBaseTest.
setGlobalVariable(string $name, $value)
Class ilMailMimeSenderFactory.
static addUserToCache(int $usrId, ilObjUser $user)
Class ilMailMimeTest.
testFactoryWillReturnUserSenderForExistingUserId()
testMimMailDelegatesEmailDeliveryToThePassedTransporter()
testMimMailDelegatesEmailDeliveryToDefaultTransport()
testTransportFactoryWillReturnNullTransportIfExternalEmailDeliveryIsDisabled()
testFactoryWillReturnUserSenderWhenExplicitlyRequested()
testFactoryWillReturnSystemSenderWhenExplicitlyRequested()
testFactoryWillReturnSystemSenderForAnonymousUserId()
testTransportFactoryWillReturnSendmailTransportIfSmtpTransportIsDisabled()
getUserById(int $usrId)
testTransportFactoryWillReturnSmtpTransportIfEnabled()
static setDefaultTransport(?ilMailMimeTransport $transport)
User class.
const ANONYMOUS_USER_ID
Definition: constants.php:27
$factory
Definition: metadata.php:75
string $key
Consumer key/client ID value.
Definition: System.php:193
array $settings
Setting values (LTI parameters, custom parameters and local parameters).
Definition: System.php:200