ILIAS  release_8 Revision v8.23
ilMailMimeTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(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 }
array $settings
Setting values (LTI parameters, custom parameters and local parameters).
Definition: System.php:200
static addUserToCache(int $usrId, ilObjUser $user)
Class ilMailMimeSenderFactory.
const ANONYMOUS_USER_ID
Definition: constants.php:27
testFactoryWillReturnUserSenderForExistingUserId()
static setDefaultTransport(?ilMailMimeTransport $transport)
testTransportFactoryWillReturnSendmailTransportIfSmtpTransportIsDisabled()
testFactoryWillReturnSystemSenderForAnonymousUserId()
testFactoryWillReturnSystemSenderWhenExplicitlyRequested()
Class ilMailBaseTest.
setGlobalVariable(string $name, $value)
testMimMailDelegatesEmailDeliveryToDefaultTransport()
string $key
Consumer key/client ID value.
Definition: System.php:193
testMimMailDelegatesEmailDeliveryToThePassedTransporter()
testTransportFactoryWillReturnNullTransportIfExternalEmailDeliveryIsDisabled()
testFactoryWillReturnUserSenderWhenExplicitlyRequested()
testTransportFactoryWillReturnSmtpTransportIfEnabled()
getUserById(int $usrId)
$factory
Definition: metadata.php:75
Class ilMailMimeTest.