amazon_ses-2.0.x-dev/tests/src/Unit/MessageBuilderTest.php

tests/src/Unit/MessageBuilderTest.php
<?php

namespace Drupal\Tests\amazon_ses\Unit;

use Drupal\Tests\amazon_ses\Traits\MockMessageBuilderTrait;
use Drupal\Tests\UnitTestCase;
use Symfony\Component\Mime\Email;

/**
 * Tests the Amazon SES handler service.
 *
 * @group amazon_ses
 */
class MessageBuilderTest extends UnitTestCase {
  use MockMessageBuilderTrait;

  /**
   * Tests that the message is built.
   *
   * @dataProvider messageData
   */
  public function testBuildMessage($message) {
    $message_builder = $this->getMessageBuilder();
    $email = $message_builder->buildMessage($message);

    $this->assertInstanceOf(Email::class, $email);

    $to = $email->getTo();
    $this->assertEquals($to[0]->getAddress(), $message['to']);

    $from = $email->getFrom();
    $name = $from[0]->getName();
    $address = $from[0]->getAddress();
    $this->assertEquals("$name <$address>", $message['from']);

    $subject = $email->getSubject();
    $this->assertEquals($subject, $message['subject']);

    $body = $email->getTextBody();
    $this->assertEquals($body, $message['body']);
  }

  /**
   * Tests that an HTML message is built.
   *
   * @dataProvider messageData
   */
  public function testHtmlMessage($message) {
    $message['body'] = '<p>Test HTML message body</p>';
    $message['headers']['Content-Type'] = 'text/html';

    $message_builder = $this->getMessageBuilder();
    $email = $message_builder->buildMessage($message);

    $body = $email->getHtmlBody();
    $this->assertEquals($body, $message['body']);
  }

  /**
   * Tests that a string with multiple recipients is split.
   *
   * @dataProvider messageData
   */
  public function testMultipleRecipients($message) {
    $email1 = $this->randomMachineName() . '@example.com';
    $email2 = $this->randomMachineName() . '@example.com';
    $email3 = $this->randomMachineName() . '@example.com';
    $message['to'] = "$email1, $email2; $email3";

    $message_builder = $this->getMessageBuilder();
    $email = $message_builder->buildMessage($message);

    $to = $email->getTo();
    $this->assertEquals($to[0]->getAddress(), $email1);
    $this->assertEquals($to[1]->getAddress(), $email2);
    $this->assertEquals($to[2]->getAddress(), $email3);
  }

  /**
   * Tests that CC addresses are added to the message.
   *
   * @dataProvider messageData
   */
  public function testCc($message) {
    $email1 = $this->randomMachineName() . '@example.com';
    $email2 = $this->randomMachineName() . '@example.com';
    $email3 = $this->randomMachineName() . '@example.com';
    $message['headers']['Cc'] = "$email1, $email2; $email3";

    $message_builder = $this->getMessageBuilder();
    $email = $message_builder->buildMessage($message);

    $cc = $email->getCc();
    $this->assertEquals($cc[0]->getAddress(), $email1);
    $this->assertEquals($cc[1]->getAddress(), $email2);
    $this->assertEquals($cc[2]->getAddress(), $email3);
  }

  /**
   * Tests that BCC addresses are added to the message.
   *
   * @dataProvider messageData
   */
  public function testBcc($message) {
    $email1 = $this->randomMachineName() . '@example.com';
    $email2 = $this->randomMachineName() . '@example.com';
    $email3 = $this->randomMachineName() . '@example.com';
    $message['headers']['Bcc'] = "$email1, $email2; $email3";

    $message_builder = $this->getMessageBuilder();
    $email = $message_builder->buildMessage($message);

    $bcc = $email->getBcc();
    $this->assertEquals($bcc[0]->getAddress(), $email1);
    $this->assertEquals($bcc[1]->getAddress(), $email2);
    $this->assertEquals($bcc[2]->getAddress(), $email3);
  }

  /**
   * Provides message data for a successful message.
   */
  public function messageData() {
    return [
      [
        [
          'to' => 'to@example.com',
          'from' => 'Test Tester <from@example.com>',
          'subject' => 'Amazon SES test',
          'body' => 'test message body',
          'headers' => [
            'Content-Type' => 'text/plain',
          ],
        ],
      ],
    ];
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc