SmsFrameworkIncomingBrowserTest.php in SMS Framework 2.1.x
File
tests/src/Functional/SmsFrameworkIncomingBrowserTest.php
View source
<?php
declare (strict_types=1);
namespace Drupal\Tests\sms\Functional;
use Drupal\Core\Url;
class SmsFrameworkIncomingBrowserTest extends SmsFrameworkBrowserTestBase {
protected $httpClient;
protected $incomingGateway;
protected function setUp() {
parent::setUp();
$this->httpClient = $this->container
->get('http_client');
$this->incomingGateway = $this
->createMemoryGateway([
'plugin' => 'incoming',
]);
$this->incomingGateway
->setSkipQueue(TRUE)
->save();
$this->container
->get('router.builder')
->rebuild();
}
public function testIncomingRouteEndpoint() {
$messages[0] = [
'message' => $this
->randomString(),
'recipients' => $this
->randomPhoneNumbers(),
];
$messages[1] = [
'message' => $this
->randomString(),
'recipients' => $this
->randomPhoneNumbers(),
];
$url = Url::fromRoute('sms.incoming.receive.' . $this->incomingGateway
->id())
->setRouteParameter('sms_gateway', $this->incomingGateway
->id())
->setAbsolute()
->toString();
$options = [
'json' => [
'messages' => $messages,
],
];
$this
->assertTrue(TRUE, sprintf('POST request to %s', $url));
$response = $this->httpClient
->post($url, $options);
$this
->assertEquals(204, $response
->getStatusCode(), 'HTTP code is 204');
$this
->assertEmpty((string) $response
->getBody(), 'Response body is empty.');
$incoming_messages = $this
->getIncomingMessages($this->incomingGateway);
$this
->assertEquals(count($messages), count($incoming_messages), 'There are 2 messages');
foreach ($messages as $i => $message) {
$this
->assertEquals($message['message'], $incoming_messages[$i]
->getMessage(), "Message {$i} contents are same.");
$this
->assertEquals($message['recipients'], $incoming_messages[$i]
->getRecipients(), "Message {$i} recipients are same.");
}
}
}