ILIAS  trunk Revision v12.0_alpha-1227-g7ff6d300864
ilMailMimeTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
23
25{
26 private const int USER_ID = 6;
27
28 protected function setUp(): void
29 {
31 ilMailMimeSenderUserById::addUserToCache(self::USER_ID, $this->getUserById(self::USER_ID));
32
33 parent::setUp();
34 }
35
37 {
38 $default_transport = $this->getMockBuilder(ilMailMimeTransport::class)->disableOriginalConstructor()->getMock();
39 $default_transport->expects($this->never())->method('send');
40
41 $transport = $this->getMockBuilder(ilMailMimeTransport::class)->getMock();
42 $transport->expects($this->once())->method('send');
43
44 $transport_factory = $this->getMockBuilder(ilMailMimeTransportFactory::class)->disableOriginalConstructor()->getMock();
45 $transport_factory->method('getTransport')->willReturn($default_transport);
46 $this->setGlobalVariable('mail.mime.transport.factory', $transport_factory);
47
48 $refinery = $this->getMockBuilder(Factory::class)->disableOriginalConstructor()->getMock();
49 $this->setGlobalVariable('refinery', $refinery);
50
51 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
52 'set',
53 'get',
54 ])->getMock();
55 $this->setGlobalVariable('ilSetting', $settings);
56
57 $refinery = $this->getMockBuilder(\ILIAS\Refinery\Factory::class)->disableOriginalConstructor()->getMock();
58 $this->setGlobalVariable('refinery', $refinery);
59
60 $mail = new ilMimeMail();
61 $mail->Send($transport);
62 }
63
65 {
66 $default_transport = $this->getMockBuilder(ilMailMimeTransport::class)->getMock();
67 $default_transport->expects($this->once())->method('send');
68
69 $transport_factory = $this->getMockBuilder(ilMailMimeTransportFactory::class)->disableOriginalConstructor()->getMock();
70 $transport_factory->method('getTransport')->willReturn($default_transport);
71 $this->setGlobalVariable('mail.mime.transport.factory', $transport_factory);
72
73 $refinery = $this->getMockBuilder(Factory::class)->disableOriginalConstructor()->getMock();
74 $this->setGlobalVariable('refinery', $refinery);
75
76 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
77 'set',
78 'get',
79 ])->getMock();
80 $this->setGlobalVariable('ilSetting', $settings);
81
82 $refinery = $this->getMockBuilder(\ILIAS\Refinery\Factory::class)->disableOriginalConstructor()->getMock();
83 $this->setGlobalVariable('refinery', $refinery);
84
85 $mail = new ilMimeMail();
86 $mail->Send();
87 }
88
90 {
91 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
92 'set',
93 'get',
94 ])->getMock();
95 $settings->method('get')->willReturnCallback(static function ($key): ?string {
96 return (string) ('mail_allow_external' !== $key);
97 });
98 $this->setGlobalVariable('ilSetting', $settings);
99
100 $event_handler = $this->getMockBuilder(ilAppEventHandler::class)->disableOriginalConstructor()->onlyMethods([
101 'raise',
102 ])->getMock();
103
104 $factory = new ilMailMimeTransportFactory($settings, $event_handler);
105 $this->assertInstanceOf(ilMailMimeTransportNull::class, $factory->getTransport());
106 }
107
109 {
110 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
111 'set',
112 'get',
113 ])->getMock();
114 $settings->method('get')->willReturnCallback(static fn($key): ?string => '1');
115 $this->setGlobalVariable('ilSetting', $settings);
116
117 $event_handler = $this->getMockBuilder(ilAppEventHandler::class)->disableOriginalConstructor()->onlyMethods([
118 'raise',
119 ])->getMock();
120
121 $factory = new ilMailMimeTransportFactory($settings, $event_handler);
122 $this->assertInstanceOf(ilMailMimeTransportSmtp::class, $factory->getTransport());
123 }
124
126 {
127 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
128 'set',
129 'get',
130 ])->getMock();
131
132 $settings->method('get')->willReturnCallback(static function ($key): ?string {
133 if ('mail_allow_external' === $key) {
134 return '1';
135 }
136
137
138 if ('mail_smtp_status' === $key) {
139 return '0';
140 }
141
142 return '1';
143 });
144 $this->setGlobalVariable('ilSetting', $settings);
145
146 $event_handler = $this->getMockBuilder(ilAppEventHandler::class)->disableOriginalConstructor()->onlyMethods([
147 'raise',
148 ])->getMock();
149
150 $factory = new ilMailMimeTransportFactory($settings, $event_handler);
151 $this->assertInstanceOf(ilMailMimeTransportSendmail::class, $factory->getTransport());
152 }
153
155 {
156 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
157 'set',
158 'get',
159 ])->getMock();
160 $template_engine_factory = $this->createMock(TemplateEngineFactoryInterface::class);
161
162 $factory = new ilMailMimeSenderFactory($settings, $template_engine_factory);
163 $this->assertInstanceOf(ilMailMimeSenderSystem::class, $factory->getSenderByUsrId(ANONYMOUS_USER_ID));
164 }
165
167 {
168 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
169 'set',
170 'get',
171 ])->getMock();
172 $template_engine_factory = $this->createMock(TemplateEngineFactoryInterface::class);
173
174 $factory = new ilMailMimeSenderFactory($settings, $template_engine_factory);
175 $this->assertInstanceOf(ilMailMimeSenderSystem::class, $factory->system());
176 }
177
178 protected function getUserById(int $usr_id): ilObjUser
179 {
180 $user = $this->getMockBuilder(ilObjUser::class)
181 ->disableOriginalConstructor()
182 ->onlyMethods(['getId'])
183 ->getMock();
184 $user->method('getId')->willReturn($usr_id);
185
186 return $user;
187 }
188
190 {
191 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
192 'set',
193 'get',
194 ])->getMock();
195 $template_engine_factory = $this->createMock(TemplateEngineFactoryInterface::class);
196
197 $factory = new ilMailMimeSenderFactory($settings, $template_engine_factory);
198 $this->assertInstanceOf(ilMailMimeSenderUser::class, $factory->getSenderByUsrId(self::USER_ID));
199 }
200
202 {
203 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
204 'set',
205 'get',
206 ])->getMock();
207 $template_engine_factory = $this->createMock(TemplateEngineFactoryInterface::class);
208
209 $factory = new ilMailMimeSenderFactory($settings, $template_engine_factory);
210 $this->assertInstanceOf(ilMailMimeSenderUser::class, $factory->user(self::USER_ID));
211 }
212}
Builds data types.
Definition: Factory.php:36
setGlobalVariable(string $name, $value)
static addUserToCache(int $usr_id, ilObjUser $user)
testFactoryWillReturnUserSenderForExistingUserId()
testMimMailDelegatesEmailDeliveryToThePassedTransporter()
testMimMailDelegatesEmailDeliveryToDefaultTransport()
testTransportFactoryWillReturnNullTransportIfExternalEmailDeliveryIsDisabled()
testFactoryWillReturnUserSenderWhenExplicitlyRequested()
testFactoryWillReturnSystemSenderWhenExplicitlyRequested()
testFactoryWillReturnSystemSenderForAnonymousUserId()
testTransportFactoryWillReturnSendmailTransportIfSmtpTransportIsDisabled()
getUserById(int $usr_id)
testTransportFactoryWillReturnSmtpTransportIfEnabled()
const int USER_ID
static setDefaultTransport(?ilMailMimeTransport $transport)
User class.
const ANONYMOUS_USER_ID
Definition: constants.php:27
Factory interface for creating template engine instances.
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.