/
MailcatcherTrait.php
56 lines (49 loc) · 1.07 KB
/
MailcatcherTrait.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
use GuzzleHttp\Client;
/**
* Adds mailcatcher calls
*/
trait MailcatcherTrait
{
/**
* @var \Guzzle\Http\Client
*/
private $mailcatcher;
public function bootMailcatcherTrait()
{
$this->mailcatcher = new Client([
'base_url' => 'http://'.getenv('MAIL_HOST').':1080'
]);
// clean emails between tests
$this->clearMessages();
}
/**
* Empty the inbox
*/
public function clearMessages()
{
$this->mailcatcher->delete('/messages');
}
/**
* Get the latest email
* @return mixed
*/
public function getLastMessage()
{
$messages = $this->getMessages();
if (empty($messages)) {
$this->fail("No messages received");
}
// messages are in descending order
return reset($messages);
}
/**
* Get all emails
* @return mixed
*/
public function getMessages()
{
$jsonResponse = $this->mailcatcher->get('/messages');
return json_decode($jsonResponse->getBody());
}
}