|
11 | 11 |
|
12 | 12 | namespace Symfony\Component\Notifier\Bridge\Smsapi\Tests;
|
13 | 13 |
|
| 14 | +use Symfony\Component\HttpClient\MockHttpClient; |
| 15 | +use Symfony\Component\HttpClient\Response\MockResponse; |
14 | 16 | use Symfony\Component\Notifier\Bridge\Smsapi\SmsapiTransport;
|
| 17 | +use Symfony\Component\Notifier\Exception\TransportException; |
15 | 18 | use Symfony\Component\Notifier\Message\ChatMessage;
|
16 | 19 | use Symfony\Component\Notifier\Message\MessageInterface;
|
17 | 20 | use Symfony\Component\Notifier\Message\SmsMessage;
|
@@ -44,4 +47,40 @@ public function unsupportedMessagesProvider(): iterable
|
44 | 47 | yield [new ChatMessage('Hello!')];
|
45 | 48 | yield [$this->createMock(MessageInterface::class)];
|
46 | 49 | }
|
| 50 | + |
| 51 | + public function createClient(int $statusCode, string $content): HttpClientInterface |
| 52 | + { |
| 53 | + return new MockHttpClient(new MockResponse($content, ['http_code' => $statusCode])); |
| 54 | + } |
| 55 | + |
| 56 | + public function responseProvider(): iterable |
| 57 | + { |
| 58 | + $responses = [ |
| 59 | + ['status' => 200, 'content' => '{"error":101,"message":"Authorization failed"}', 'errorMessage' => 'Unable to send the SMS: "Authorization failed".'], |
| 60 | + ['status' => 500, 'content' => '{}', 'errorMessage' => 'Unable to send the SMS: "unknown error".'], |
| 61 | + ['status' => 500, 'content' => '{"error":null,"message":"Unknown"}', 'errorMessage' => 'Unable to send the SMS: "Unknown".'], |
| 62 | + ['status' => 500, 'content' => '{"error":null,"message":null}', 'errorMessage' => 'Unable to send the SMS: "unknown error".'], |
| 63 | + ['status' => 500, 'content' => 'Internal error', 'errorMessage' => 'Could not decode body to an array.'], |
| 64 | + ['status' => 200, 'content' => 'Internal error', 'errorMessage' => 'Could not decode body to an array.'], |
| 65 | + ]; |
| 66 | + |
| 67 | + foreach ($responses as $response) { |
| 68 | + yield [$response['status'], $response['content'], $response['errorMessage']]; |
| 69 | + } |
| 70 | + } |
| 71 | + |
| 72 | + /** |
| 73 | + * @dataProvider responseProvider |
| 74 | + */ |
| 75 | + public function testThrowExceptionWhenMessageWasNotSent(int $statusCode, string $content, string $errorMessage) |
| 76 | + { |
| 77 | + $client = $this->createClient($statusCode, $content); |
| 78 | + $transport = $this->createTransport($client); |
| 79 | + $message = new SmsMessage('0611223344', 'Hello!'); |
| 80 | + |
| 81 | + $this->expectException(TransportException::class); |
| 82 | + $this->expectExceptionMessage($errorMessage); |
| 83 | + |
| 84 | + $transport->send($message); |
| 85 | + } |
47 | 86 | }
|
0 commit comments