19declare(strict_types=1);
23use PHPUnit\Framework\MockObject\Stub;
30 protected function setUp(): void
38 public function testMimMailDelegatesEmailDeliveryToThePassedTransporter(): void
40 $default_transport = $this->getMockBuilder(ilMailMimeTransport::class)->disableOriginalConstructor()->getMock();
41 $default_transport->expects($this->never())->method(
'send');
43 $transport = $this->getMockBuilder(ilMailMimeTransport::class)->getMock();
44 $transport->expects($this->once())->method(
'send');
47 $transport_factory = $this->getStubBuilder(ilMailMimeTransportFactory::class)->disableOriginalConstructor()->getStub();
48 $transport_factory->method(
'getTransport')->willReturn($default_transport);
51 $refinery = $this->getStubBuilder(Factory::class)->disableOriginalConstructor()->getStub();
55 $settings = $this->getStubBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
61 $refinery = $this->getStubBuilder(Factory::class)->disableOriginalConstructor()->getStub();
65 $mail->Send($transport);
68 public function testMimMailDelegatesEmailDeliveryToDefaultTransport(): void
70 $default_transport = $this->getMockBuilder(ilMailMimeTransport::class)->getMock();
71 $default_transport->expects($this->once())->method(
'send');
74 $transport_factory = $this->getStubBuilder(ilMailMimeTransportFactory::class)->disableOriginalConstructor()->getStub();
75 $transport_factory->method(
'getTransport')->willReturn($default_transport);
78 $refinery = $this->getStubBuilder(Factory::class)->disableOriginalConstructor()->getStub();
82 $settings = $this->getStubBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
88 $refinery = $this->getStubBuilder(Factory::class)->disableOriginalConstructor()->getStub();
95 public function testTransportFactoryWillReturnNullTransportIfExternalEmailDeliveryIsDisabled(): void
98 $settings = $this->getStubBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
102 $settings->method(
'get')->willReturnCallback(
static function ($key): ?
string {
103 return (
string) (
'mail_allow_external' !== $key);
108 $event_handler = $this->getStubBuilder(ilAppEventHandler::class)->disableOriginalConstructor()->onlyMethods([
113 $irss = $this->createStub(Services::class);
116 $this->assertInstanceOf(ilMailMimeTransportNull::class, $factory->getTransport());
119 public function testTransportFactoryWillReturnSmtpTransportIfEnabled(): void
122 $settings = $this->getStubBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
126 $settings->method(
'get')->willReturnCallback(
static fn($key): ?
string =>
'1');
130 $event_handler = $this->getStubBuilder(ilAppEventHandler::class)->disableOriginalConstructor()->onlyMethods([
135 $irss = $this->createStub(Services::class);
138 $this->assertInstanceOf(ilMailMimeTransportSmtp::class, $factory->getTransport());
141 public function testTransportFactoryWillReturnSendmailTransportIfSmtpTransportIsDisabled(): void
144 $settings = $this->getStubBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
149 $settings->method(
'get')->willReturnCallback(
static function ($key): ?
string {
150 if (
'mail_allow_external' === $key) {
155 if (
'mail_smtp_status' === $key) {
164 $event_handler = $this->getStubBuilder(ilAppEventHandler::class)->disableOriginalConstructor()->onlyMethods([
169 $irss = $this->createStub(Services::class);
172 $this->assertInstanceOf(ilMailMimeTransportSendmail::class, $factory->getTransport());
175 public function testFactoryWillReturnSystemSenderForAnonymousUserId(): void
178 $settings = $this->getStubBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
183 $template_engine_factory = $this->createStub(TemplateEngineFactoryInterface::class);
186 $this->assertInstanceOf(ilMailMimeSenderSystem::class, $factory->getSenderByUsrId(
ANONYMOUS_USER_ID));
189 public function testFactoryWillReturnSystemSenderWhenExplicitlyRequested(): void
192 $settings = $this->getStubBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
197 $template_engine_factory = $this->createStub(TemplateEngineFactoryInterface::class);
200 $this->assertInstanceOf(ilMailMimeSenderSystem::class, $factory->system());
203 protected function getUserById(
int $usr_id):
ilObjUser&Stub
206 $user = $this->getStubBuilder(ilObjUser::class)
207 ->disableOriginalConstructor()
208 ->onlyMethods([
'getId'])
210 $user->method(
'getId')->willReturn($usr_id);
215 public function testFactoryWillReturnUserSenderForExistingUserId(): void
218 $settings = $this->getStubBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
223 $template_engine_factory = $this->createStub(TemplateEngineFactoryInterface::class);
226 $this->assertInstanceOf(ilMailMimeSenderUser::class, $factory->getSenderByUsrId(self::USER_ID));
229 public function testFactoryWillReturnUserSenderWhenExplicitlyRequested(): void
232 $settings = $this->getStubBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
237 $template_engine_factory = $this->createStub(TemplateEngineFactoryInterface::class);
240 $this->assertInstanceOf(ilMailMimeSenderUser::class, $factory->user(self::USER_ID));
setGlobalVariable(string $name, $value)
static addUserToCache(int $usr_id, ilObjUser $user)
static setDefaultTransport(?ilMailMimeTransport $transport)
Factory interface for creating template engine instances.