mirror of
https://github.com/retailcrm/mailgun-php.git
synced 2024-11-21 20:16:03 +03:00
Fixed inline image issue. Added new tests.
This commit is contained in:
parent
80987a952d
commit
0a7c96c34a
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,3 +8,4 @@ build
|
||||
composer.lock
|
||||
nbproject/*
|
||||
.idea
|
||||
phpunit.phar
|
||||
|
@ -119,8 +119,10 @@ class RestClient
|
||||
foreach ($fields as $fieldName) {
|
||||
if (isset($files[$fieldName])) {
|
||||
if (is_array($files[$fieldName])) {
|
||||
$fileIndex = 0;
|
||||
foreach ($files[$fieldName] as $file) {
|
||||
$postFiles[] = $this->prepareFile($fieldName, $file);
|
||||
$postFiles[] = $this->prepareFile($fieldName, $file, $fileIndex);
|
||||
$fileIndex++;
|
||||
}
|
||||
} else {
|
||||
$postFiles[] = $this->prepareFile($fieldName, $files[$fieldName]);
|
||||
@ -251,10 +253,11 @@ class RestClient
|
||||
*
|
||||
* @param string $fieldName
|
||||
* @param string|array $filePath
|
||||
* @param integer $fileIndex
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function prepareFile($fieldName, $filePath)
|
||||
protected function prepareFile($fieldName, $filePath, $fileIndex=0)
|
||||
{
|
||||
$filename = null;
|
||||
// Backward compatibility code
|
||||
@ -268,6 +271,9 @@ class RestClient
|
||||
$filePath = substr($filePath, 1);
|
||||
}
|
||||
|
||||
// Add index for multiple file support
|
||||
$fieldName .= '[' . $fileIndex . ']';
|
||||
|
||||
return [
|
||||
'name' => $fieldName,
|
||||
'contents' => fopen($filePath, 'r'),
|
||||
|
111
tests/Mailgun/Tests/Messages/ComplexMessageTest.php
Normal file
111
tests/Mailgun/Tests/Messages/ComplexMessageTest.php
Normal file
@ -0,0 +1,111 @@
|
||||
<?PHP
|
||||
|
||||
namespace Mailgun\Tests\Messages;
|
||||
|
||||
use Mailgun\Tests\Mock\Mailgun;
|
||||
use Mailgun\Connection\RestClient;
|
||||
|
||||
|
||||
class mockRestClient extends RestClient{
|
||||
public function send($method, $uri, $body = null, $files = [], array $headers = [])
|
||||
{
|
||||
$result = new \stdClass;
|
||||
|
||||
$result->method = $method;
|
||||
$result->uri = $uri;
|
||||
$result->body = $body;
|
||||
$result->files = $files;
|
||||
$result->headers = $headers;
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
class mockMailgun extends Mailgun{
|
||||
public function __construct(
|
||||
$apiKey = null,
|
||||
HttpClient $httpClient = null,
|
||||
$apiEndpoint = 'api.mailgun.net'
|
||||
) {
|
||||
$this->apiKey = $apiKey;
|
||||
$this->restClient = new mockRestClient($apiKey, $apiEndpoint, $httpClient);
|
||||
}
|
||||
}
|
||||
|
||||
class ComplexMessageTest extends \Mailgun\Tests\MailgunTestCase
|
||||
{
|
||||
private $client;
|
||||
private $sampleDomain = 'samples.mailgun.org';
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->client = new mockMailgun('My-Super-Awesome-API-Key');
|
||||
}
|
||||
|
||||
public function testSendComplexMessage()
|
||||
{
|
||||
|
||||
$message = [
|
||||
'to' => 'test@test.mailgun.org',
|
||||
'from' => 'sender@test.mailgun.org',
|
||||
'subject' => 'This is my test subject',
|
||||
'text' => 'Testing!'
|
||||
];
|
||||
|
||||
$files = [
|
||||
'inline' => [
|
||||
[
|
||||
'remoteName'=> 'mailgun_icon1.png',
|
||||
'filePath' => 'tests/Mailgun/Tests/TestAssets/mailgun_icon1.png'
|
||||
],
|
||||
[
|
||||
'remoteName'=> 'mailgun_icon2.png',
|
||||
'filePath' => 'tests/Mailgun/Tests/TestAssets/mailgun_icon2.png'
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
$result = $this->client->sendMessage('test.mailgun.org', $message, $files);
|
||||
|
||||
$this->assertEquals('POST', $result->method);
|
||||
$this->assertEquals('test.mailgun.org/messages', $result->uri);
|
||||
$this->assertEquals([], $result->body);
|
||||
|
||||
// Start a counter, make sure all files are asserted
|
||||
$testCount = 0;
|
||||
|
||||
foreach($result->files as $file){
|
||||
if ($file['name'] == 'to'){
|
||||
$this->assertEquals($file['contents'], 'test@test.mailgun.org');
|
||||
$testCount++;
|
||||
}
|
||||
if ($file['name'] == 'from'){
|
||||
$this->assertEquals($file['contents'], 'sender@test.mailgun.org');
|
||||
$testCount++;
|
||||
}
|
||||
if ($file['name'] == 'subject'){
|
||||
$this->assertEquals($file['contents'], 'This is my test subject');
|
||||
$testCount++;
|
||||
}
|
||||
if ($file['name'] == 'text'){
|
||||
$this->assertEquals($file['contents'], 'Testing!');
|
||||
$testCount++;
|
||||
}
|
||||
if ($file['name'] == 'inline[0]'){
|
||||
$this->assertEquals($file['filename'], 'mailgun_icon1.png');
|
||||
$testCount++;
|
||||
}
|
||||
if ($file['name'] == 'inline[1]'){
|
||||
$this->assertEquals($file['filename'], 'mailgun_icon2.png');
|
||||
$testCount++;
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure all "files" are asserted
|
||||
$this->assertEquals(count($result->files), $testCount);
|
||||
|
||||
$this->assertEquals([], $result->body);
|
||||
$this->assertEquals([], $result->headers);
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user