1: <?php
2: /**
3: * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
4: * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
5: *
6: * Licensed under The MIT License
7: * For full copyright and license information, please see the LICENSE.txt
8: * Redistributions of files must retain the above copyright notice.
9: *
10: * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
11: * @link https://cakephp.org CakePHP(tm) Project
12: * @since 3.7.0
13: * @license https://opensource.org/licenses/mit-license.php MIT License
14: */
15: namespace Cake\TestSuite;
16:
17: use Cake\Mailer\AbstractTransport;
18: use Cake\Mailer\Email;
19: use Cake\Mailer\TransportFactory;
20:
21: /**
22: * TestEmailTransport
23: *
24: * Set this as the email transport to capture emails for later assertions
25: *
26: * @see Cake\TestSuite\EmailTrait
27: */
28: class TestEmailTransport extends AbstractTransport
29: {
30: private static $emails = [];
31:
32: /**
33: * Stores email for later assertions
34: *
35: * @param Email $email Email
36: * @return bool
37: */
38: public function send(Email $email)
39: {
40: static::$emails[] = $email;
41:
42: return true;
43: }
44:
45: /**
46: * Replaces all currently configured transports with this one
47: *
48: * @return void
49: */
50: public static function replaceAllTransports()
51: {
52: $configuredTransports = TransportFactory::configured();
53:
54: foreach ($configuredTransports as $configuredTransport) {
55: $config = TransportFactory::getConfig($configuredTransport);
56: $config['className'] = self::class;
57: TransportFactory::drop($configuredTransport);
58: TransportFactory::setConfig($configuredTransport, $config);
59: }
60: }
61:
62: /**
63: * Gets emails sent
64: *
65: * @return \Cake\Mailer\Email[]
66: */
67: public static function getEmails()
68: {
69: return static::$emails;
70: }
71:
72: /**
73: * Clears list of emails that have been sent
74: *
75: * @return void
76: */
77: public static function clearEmails()
78: {
79: static::$emails = [];
80: }
81: }
82: