1616 */
1717namespace Cake \Queue \Test \TestCase \Job ;
1818
19+ use Cake \Mailer \Message ;
20+ use Cake \Mailer \Transport \SmtpTransport ;
1921use Cake \Queue \Mailer \Transport \QueueTransport ;
2022use Cake \Queue \QueueManager ;
2123use Cake \TestSuite \TestCase ;
2224
2325class QueueTransportTest extends TestCase
2426{
27+ private $ fsQueuePath = TMP . DS . 'queue ' ;
28+
29+ private function getFsQueueUrl (): string
30+ {
31+ return 'file:/// ' . $ this ->fsQueuePath ;
32+ }
33+
34+ private function getFsQueueFile (): string
35+ {
36+ return $ this ->getFsQueueUrl () . DS . 'enqueue.app.default ' ;
37+ }
38+
2539 /**
2640 * Test send
2741 *
@@ -31,9 +45,9 @@ public function testSend()
3145 {
3246 QueueManager::setConfig ('default ' , [
3347 'queue ' => 'default ' ,
34- 'url ' => ' null: ' ,
48+ 'url ' => $ this -> getFsQueueUrl () ,
3549 ]);
36- $ message = (new \ Cake \ Mailer \ Message ())
50+ $ message = (new Message ())
375138523953 ->setSubject ('Sample Subject ' );
@@ -58,6 +72,83 @@ public function testSend()
5872
5973 $ expected = ['headers ' => $ headers , 'message ' => 'Message has been enqueued ' ];
6074 $ this ->assertEquals ($ expected , $ result );
75+
76+ $ fsQueueFile = $ this ->getFsQueueFile ();
77+ $ this ->assertFileExists ($ fsQueueFile );
78+
79+ $ content = file_get_contents ($ fsQueueFile );
80+ $ this ->assertStringContainsString ('MailTransport ' , $ content );
81+
82+ QueueManager::drop ('default ' );
83+ }
84+
85+ /**
86+ * Test send custom transport
87+ *
88+ * @return void
89+ */
90+ public function testSendCustomTransport ()
91+ {
92+ QueueManager::setConfig ('default ' , [
93+ 'queue ' => 'default ' ,
94+ 'url ' => $ this ->getFsQueueUrl (),
95+ ]);
96+ $ message = (new Message ());
97+
98+ $ transport = new QueueTransport ([
99+ 'transport ' => SmtpTransport::class,
100+ 'config ' => [
101+ 'host ' => 'mail.example.com ' ,
102+ ],
103+ ]);
104+ $ transport ->send ($ message );
105+
106+ $ fsQueueFile = $ this ->getFsQueueFile ();
107+ $ this ->assertFileExists ($ fsQueueFile );
108+
109+ $ content = file_get_contents ($ fsQueueFile );
110+ $ this ->assertStringContainsString ('SmtpTransport ' , $ content );
111+ $ this ->assertStringContainsString ('"config\":{\"host\":\"mail.example.com\"} ' , $ content );
112+
61113 QueueManager::drop ('default ' );
62114 }
115+
116+ /**
117+ * Test send backwards compatibility transport config
118+ *
119+ * @return void
120+ */
121+ public function testSendBcTransport ()
122+ {
123+ QueueManager::setConfig ('default ' , [
124+ 'queue ' => 'default ' ,
125+ 'url ' => $ this ->getFsQueueUrl (),
126+ ]);
127+ $ message = (new Message ());
128+
129+ $ transport = new QueueTransport ([
130+ 'transport ' => SmtpTransport::class,
131+ 'host ' => 'mail.example.com ' ,
132+ ]);
133+ $ transport ->send ($ message );
134+
135+ $ fsQueueFile = $ this ->getFsQueueFile ();
136+ $ this ->assertFileExists ($ fsQueueFile );
137+
138+ $ content = file_get_contents ($ fsQueueFile );
139+ $ this ->assertStringContainsString ('SmtpTransport ' , $ content );
140+ $ this ->assertStringContainsString ('"host\":\"mail.example.com\" ' , $ content );
141+
142+ QueueManager::drop ('default ' );
143+ }
144+
145+ public function tearDown (): void
146+ {
147+ parent ::tearDown ();
148+
149+ $ fsQueueFile = $ this ->getFsQueueFile ();
150+ if (file_exists ($ fsQueueFile )) {
151+ unlink ($ fsQueueFile );
152+ }
153+ }
63154}
0 commit comments