client = new Mailgun('My-Super-Awesome-API-Key'); } public function testBlankInstantiation() { $message = $this->client->BatchMessage($this->sampleDomain); $this->assertTrue(is_array($message->getMessage())); } public function testAddRecipient() { $message = $this->client->BatchMessage($this->sampleDomain); $message->addToRecipient('test@samples.mailgun.org', ['first' => 'Test', 'last' => 'User']); $messageObj = $message->getMessage(); $this->assertEquals(['to' => ["'Test User' "]], $messageObj); $reflectionClass = new \ReflectionClass(get_class($message)); $property = $reflectionClass->getProperty('counters'); $property->setAccessible(true); $array = $property->getValue($message); $this->assertEquals(1, $array['recipients']['to']); } public function testAddRecipientWithoutFirstAndLastName() { $message = $this->client->BatchMessage($this->sampleDomain); $message->addToRecipient('test@samples.mailgun.org', 'this-is-not-an-array'); $messageObj = $message->getMessage(); $this->assertEquals(['to' => ['test@samples.mailgun.org']], $messageObj); $reflectionClass = new \ReflectionClass(get_class($message)); $property = $reflectionClass->getProperty('counters'); $property->setAccessible(true); $array = $property->getValue($message); $this->assertEquals(1, $array['recipients']['to']); } public function testRecipientVariablesOnTo() { $message = $this->client->BatchMessage($this->sampleDomain); $message->addToRecipient('test@samples.mailgun.org', ['first' => 'Test', 'last' => 'User']); $messageObj = $message->getMessage(); $this->assertEquals(['to' => ["'Test User' "]], $messageObj); $reflectionClass = new \ReflectionClass(get_class($message)); $property = $reflectionClass->getProperty('batchRecipientAttributes'); $property->setAccessible(true); $propertyValue = $property->getValue($message); $this->assertEquals('Test', $propertyValue['test@samples.mailgun.org']['first']); $this->assertEquals('User', $propertyValue['test@samples.mailgun.org']['last']); } public function testRecipientVariablesOnCc() { $message = $this->client->BatchMessage($this->sampleDomain); $message->addCcRecipient('test@samples.mailgun.org', ['first' => 'Test', 'last' => 'User']); $messageObj = $message->getMessage(); $this->assertEquals(['cc' => ["'Test User' "]], $messageObj); $reflectionClass = new \ReflectionClass(get_class($message)); $property = $reflectionClass->getProperty('batchRecipientAttributes'); $property->setAccessible(true); $propertyValue = $property->getValue($message); $this->assertEquals('Test', $propertyValue['test@samples.mailgun.org']['first']); $this->assertEquals('User', $propertyValue['test@samples.mailgun.org']['last']); } public function testRecipientVariablesOnBcc() { $message = $this->client->BatchMessage($this->sampleDomain); $message->addBccRecipient('test@samples.mailgun.org', ['first' => 'Test', 'last' => 'User']); $messageObj = $message->getMessage(); $this->assertEquals(['bcc' => ["'Test User' "]], $messageObj); $reflectionClass = new \ReflectionClass(get_class($message)); $property = $reflectionClass->getProperty('batchRecipientAttributes'); $property->setAccessible(true); $propertyValue = $property->getValue($message); $this->assertEquals('Test', $propertyValue['test@samples.mailgun.org']['first']); $this->assertEquals('User', $propertyValue['test@samples.mailgun.org']['last']); } public function testAddMultipleBatchRecipients() { $message = $this->client->BatchMessage($this->sampleDomain); for ($i = 0; $i < 100; ++$i) { $message->addToRecipient("$i@samples.mailgun.org", ['first' => 'Test', 'last' => "User $i"]); } $messageObj = $message->getMessage(); $this->assertEquals(100, count($messageObj['to'])); } public function testMaximumBatchSize() { $message = $this->client->BatchMessage($this->sampleDomain); $message->setFromAddress('samples@mailgun.org', ['first' => 'Test', 'last' => 'User']); $message->setSubject('This is the subject of the message!'); $message->setTextBody('This is the text body of the message!'); for ($i = 0; $i < 1001; ++$i) { $message->addToRecipient("$i@samples.mailgun.org", ['first' => 'Test', 'last' => "User $i"]); } $messageObj = $message->getMessage(); $this->assertEquals(1, count($messageObj['to'])); } public function testAttributeResetOnEndBatchMessage() { $message = $this->client->BatchMessage($this->sampleDomain); $message->addToRecipient('test-user@samples.mailgun.org', ['first' => 'Test', 'last' => 'User']); $message->setFromAddress('samples@mailgun.org', ['first' => 'Test', 'last' => 'User']); $message->setSubject('This is the subject of the message!'); $message->setTextBody('This is the text body of the message!'); $message->finalize(); $messageObj = $message->getMessage(); $this->assertTrue(true, empty($messageObj)); } public function testDefaultIDInVariables() { $message = $this->client->BatchMessage($this->sampleDomain); $message->addToRecipient('test-user@samples.mailgun.org', ['first' => 'Test', 'last' => 'User']); $reflectionClass = new \ReflectionClass(get_class($message)); $property = $reflectionClass->getProperty('batchRecipientAttributes'); $property->setAccessible(true); $propertyValue = $property->getValue($message); $this->assertEquals(1, $propertyValue['test-user@samples.mailgun.org']['id']); } public function testgetMessageIds() { $message = $this->client->BatchMessage($this->sampleDomain); $message->addToRecipient('test-user@samples.mailgun.org', ['first' => 'Test', 'last' => 'User']); $message->setFromAddress('samples@mailgun.org', ['first' => 'Test', 'last' => 'User']); $message->setSubject('This is the subject of the message!'); $message->setTextBody('This is the text body of the message!'); $message->finalize(); $this->assertEquals(['1234'], $message->getMessageIds()); } public function testInvalidMissingRequiredMIMEParametersExceptionGetsFlungNoFrom() { $this->setExpectedException('\\Mailgun\\Messages\\Exceptions\\MissingRequiredMIMEParameters'); $message = $this->client->BatchMessage($this->sampleDomain); $message->sendMessage([1, 2, 3]); } public function testInvalidMissingRequiredMIMEParametersExceptionGetsFlungNoTo() { $this->setExpectedException('\\Mailgun\\Messages\\Exceptions\\MissingRequiredMIMEParameters'); $message = $this->client->BatchMessage($this->sampleDomain); $message->sendMessage(['from' => 1, 2, 3]); } public function testInvalidMissingRequiredMIMEParametersExceptionGetsFlungNoSubject() { $this->setExpectedException('\\Mailgun\\Messages\\Exceptions\\MissingRequiredMIMEParameters'); $message = $this->client->BatchMessage($this->sampleDomain); $message->sendMessage(['from' => 1, 'to' => 2, 3]); } public function testInvalidMissingRequiredMIMEParametersExceptionGetsFlungNoTextOrHtml() { $this->setExpectedException('\\Mailgun\\Messages\\Exceptions\\MissingRequiredMIMEParameters'); $message = $this->client->BatchMessage($this->sampleDomain); $message->sendMessage(['from' => 1, 'to' => 2, 'subject' => 3]); } }