WRITE_TEST_SERVER_TOKEN, $tk->TEST_TIMEOUT); $currentTime = date("c"); $response = $client->sendEmail($tk->WRITE_TEST_SENDER_EMAIL_ADDRESS, $tk->WRITE_TEST_EMAIL_RECIPIENT_ADDRESS, "Hello from the PHP Postmark Client Tests! ($currentTime)", 'Hi there!', 'This is a text body for a test email.'); $this->assertNotEmpty($response, 'The client could not send a basic message.'); } function testClientCanSetMessageStream() { $tk = parent::$testKeys; $client = new PostmarkClient($tk->WRITE_TEST_SERVER_TOKEN, $tk->TEST_TIMEOUT); $currentTime = date("c"); //Sending with a valid stream $response = $client->sendEmail($tk->WRITE_TEST_SENDER_EMAIL_ADDRESS, $tk->WRITE_TEST_EMAIL_RECIPIENT_ADDRESS, "Hello from the PHP Postmark Client Tests! ($currentTime)", 'Hi there!', 'This is a text body for a test email via the default stream.', NULL, true, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'outbound'); $this->assertNotEmpty($response, 'The client could not send message to the default stream.'); // Sending with an invalid stream try { $response = $client->sendEmail($tk->WRITE_TEST_SENDER_EMAIL_ADDRESS, $tk->WRITE_TEST_EMAIL_RECIPIENT_ADDRESS, "Hello from the PHP Postmark Client Tests! ($currentTime)", 'Hi there!', 'This is a text body for a test email.', NULL, true, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'unknown-stream'); } catch(PostmarkException $ex){ $this->assertEquals(422, $ex->httpStatusCode); $this->assertEquals("The 'MessageStream' provided does not exist on this server.", $ex->message); } } function testClientCanSendMessageWithRawAttachment() { $tk = parent::$testKeys; $client = new PostmarkClient($tk->WRITE_TEST_SERVER_TOKEN, $tk->TEST_TIMEOUT); $currentTime = date("c"); $attachment = PostmarkAttachment::fromRawData("attachment content", "hello.txt", "text/plain"); $response = $client->sendEmail($tk->WRITE_TEST_SENDER_EMAIL_ADDRESS, $tk->WRITE_TEST_EMAIL_RECIPIENT_ADDRESS, "Hello from the PHP Postmark Client Tests! ($currentTime)", 'Hi there!', 'This is a text body for a test email.', NULL, true, NULL, NULL, NULL, array("X-Test-Header" => "Header.", 'X-Test-Header-2' => 'Test Header 2'), array($attachment)); $this->assertNotEmpty($response, 'The client could not send a message with an attachment.'); } function testClientCanSendMessageWithFileSystemAttachment() { $tk = parent::$testKeys; $client = new PostmarkClient($tk->WRITE_TEST_SERVER_TOKEN, $tk->TEST_TIMEOUT); $currentTime = date("c"); $attachment = PostmarkAttachment::fromFile(dirname(__FILE__) . '/postmark-logo.png', "hello.png", "image/png"); $response = $client->sendEmail($tk->WRITE_TEST_SENDER_EMAIL_ADDRESS, $tk->WRITE_TEST_EMAIL_RECIPIENT_ADDRESS, "Hello from the PHP Postmark Client Tests! ($currentTime)", 'Hi there! From ', 'This is a text body for a test email.', NULL, true, NULL, NULL, NULL, array("X-Test-Header" => "Header.", 'X-Test-Header-2' => 'Test Header 2'), array($attachment)); $this->assertNotEmpty($response, 'The client could not send a message with an attachment.'); } function testClientCanSendBatchMessages() { $tk = parent::$testKeys; $currentTime = date("c"); $batch = array(); $attachment = PostmarkAttachment::fromRawData("attachment content", "hello.txt", "text/plain"); for ($i = 0; $i < 5; $i++) { $payload = array( 'From' => $tk->WRITE_TEST_SENDER_EMAIL_ADDRESS, 'To' => $tk->WRITE_TEST_EMAIL_RECIPIENT_ADDRESS, 'Subject' => "Hello from the PHP Postmark Client Tests! ($currentTime)", 'HtmlBody' => 'Hi there! (batch test)', 'TextBody' => 'This is a text body for a test email.', 'TrackOpens' => true, 'Headers' => array("X-Test-Header" => "Test Header Content", 'X-Test-Date-Sent' => date('c')), 'Attachments' => array($attachment), ); $batch[] = $payload; } $client = new PostmarkClient($tk->WRITE_TEST_SERVER_TOKEN, $tk->TEST_TIMEOUT); $response = $client->sendEmailBatch($batch); $this->assertNotEmpty($response, 'The client could not send a batch of messages.'); } public function testRequestSentWithCustomGuzzleClientHasCorrectUri() { $successResponse = new Response( 200, ['content-type' => 'application/json'], json_encode([ 'To' => 'user@example.com', 'SubmittedAt' => '2014-02-17T07:25:01.4178645-05:00', 'MessageId' => '0a129aee-e1cd-480d-b08d-4f48548ff48d', 'ErrorCode' => 0, 'Message' => 'OK', ]) ); $guzzleMockHandler = new MockHandler(); $guzzleMockHandler->append($successResponse); $httpHistoryContainer = []; $handlerStack = HandlerStack::create($guzzleMockHandler); $handlerStack->push(Middleware::history($httpHistoryContainer), 'history'); $guzzleClient = new Client([ 'handler' => $handlerStack, ]); $postmarkClient = new PostmarkClient('not-applicable'); $postmarkClient->setClient($guzzleClient); $postmarkClient->sendEmail( 'sender@example.com', 'recipient@example.com', 'Test message', null, 'Text body' ); /* @var RequestInterface $lastRequest */ $lastRequest = $httpHistoryContainer[0]['request']; /* @var UriInterface $lastRequestUri */ $lastRequestUri = $lastRequest->getUri(); $this->assertEquals( PostmarkClient::$BASE_URL, sprintf('%s://%s', $lastRequestUri->getScheme(), $lastRequestUri->getHost()) ); } } ?>