Bug fix - Allow adding custom headers with non-array value (#255)

* Bug fix - Allow adding custom headers with non-array value

* Remove whitespace

* Functional test for adding custom headers (either singular or multiple)

* Style fixes for functional test
This commit is contained in:
James Kraus 2017-03-26 04:23:03 -04:00 committed by Tobias Nyholm
parent 64d1c40604
commit d2638a0457
3 changed files with 61 additions and 2 deletions

View File

@ -248,7 +248,16 @@ class MessageBuilder
if (!preg_match('/^h:/i', $headerName)) { if (!preg_match('/^h:/i', $headerName)) {
$headerName = 'h:'.$headerName; $headerName = 'h:'.$headerName;
} }
$this->message[$headerName] = [$headerData];
if (array_key_exists($headerName, $this->message)) {
if (is_array($this->message[$headerName])) {
$this->message[$headerName][] = $headerData;
} else {
$this->message[$headerName] = [$this->message[$headerName], $headerData];
}
} else {
$this->message[$headerName] = $headerData;
}
return $this->message[$headerName]; return $this->message[$headerName];
} }

View File

@ -0,0 +1,41 @@
<?php
/*
* Copyright (C) 2013-2016 Mailgun
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
namespace Mailgun\Tests\Functional;
/**
* @author James Kraus <jkraus@imagineteam.com>
*/
class MessageBuilderHeaderTest extends \PHPUnit_Framework_TestCase
{
public function testSimpleExample()
{
$messageValidator = function ($headers) {
$this->assertContains(['name' => 'h:My-Singular-Header', 'contents' => '123'], $headers);
$this->assertContains(['name' => 'h:My-Plural-Header[0]', 'contents' => '123'], $headers);
$this->assertContains(['name' => 'h:My-Plural-Header[1]', 'contents' => '456'], $headers);
};
// Create the mocked mailgun client.
$mailgun = MockedMailgun::create($this, 'POST', 'domain/messages', [], $messageValidator);
$builder = $mailgun->MessageBuilder();
$builder->addCustomHeader('My-Singular-Header', '123');
$builder->addCustomHeader('My-Plural-Header', '123');
$builder->addCustomHeader('My-Plural-Header', '456');
$builder->setFromAddress('from@example.com');
$builder->addToRecipient('to@example.com');
$builder->setSubject('Foo');
$builder->setTextBody('Bar');
$mailgun->sendMessage('domain', $builder->getMessage());
}
}

View File

@ -133,7 +133,16 @@ class MessageBuilderTest extends \Mailgun\Tests\MailgunTestCase
$message = $this->client->MessageBuilder(); $message = $this->client->MessageBuilder();
$message->addCustomHeader('My-Header', '123'); $message->addCustomHeader('My-Header', '123');
$messageObj = $message->getMessage(); $messageObj = $message->getMessage();
$this->assertEquals(['h:My-Header' => ['123']], $messageObj); $this->assertEquals(['h:My-Header' => '123'], $messageObj);
}
public function testAddMultipleCustomHeader()
{
$message = $this->client->MessageBuilder();
$message->addCustomHeader('My-Header', '123');
$message->addCustomHeader('My-Header', '456');
$messageObj = $message->getMessage();
$this->assertEquals(['h:My-Header' => ['123', '456']], $messageObj);
} }
public function testSetTextBody() public function testSetTextBody()