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