93 lines
2.5 KiB
PHP
93 lines
2.5 KiB
PHP
<?php
|
|
|
|
use GuzzleHttp\Client;
|
|
use GuzzleHttp\Psr7\Response;
|
|
use LaravelFCM\Sender\FCMSender;
|
|
|
|
class ResponseTest extends FCMTestCase
|
|
{
|
|
/**
|
|
* @test
|
|
*/
|
|
public function it_send_a_notification_to_a_device()
|
|
{
|
|
$response = new Response(200, [], '{
|
|
"multicast_id": 216,
|
|
"success": 3,
|
|
"failure": 3,
|
|
"canonical_ids": 1,
|
|
"results": [
|
|
{ "message_id": "1:0408" }
|
|
]
|
|
}');
|
|
|
|
$client = Mockery::mock(Client::class);
|
|
$client->shouldReceive('request')->once()->andReturn($response);
|
|
|
|
$tokens = 'uniqueToken';
|
|
|
|
$fcm = new FCMSender($client, 'http://test.test');
|
|
$fcm->sendTo($tokens);
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function it_send_a_notification_to_more_than_1000_devices()
|
|
{
|
|
$response = new Response(200, [], '{
|
|
"multicast_id": 216,
|
|
"success": 3,
|
|
"failure": 3,
|
|
"canonical_ids": 1,
|
|
"results": [
|
|
{ "message_id": "1:0408" },
|
|
{ "error": "Unavailable" },
|
|
{ "error": "InvalidRegistration" },
|
|
{ "message_id": "1:1516" },
|
|
{ "message_id": "1:2342", "registration_id": "32" },
|
|
{ "error": "NotRegistered"}
|
|
]
|
|
}');
|
|
|
|
$client = Mockery::mock(Client::class);
|
|
$client->shouldReceive('request')->times(10)->andReturn($response);
|
|
|
|
$tokens = [];
|
|
for ($i = 0; $i < 10000; ++$i) {
|
|
$tokens[$i] = 'token_'.$i;
|
|
}
|
|
|
|
$fcm = new FCMSender($client, 'http://test.test');
|
|
$fcm->sendTo($tokens);
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function an_empty_array_of_tokens_thrown_an_exception()
|
|
{
|
|
$response = new Response(400, [], '{
|
|
"multicast_id": 216,
|
|
"success": 3,
|
|
"failure": 3,
|
|
"canonical_ids": 1,
|
|
"results": [
|
|
{ "message_id": "1:0408" },
|
|
{ "error": "Unavailable" },
|
|
{ "error": "InvalidRegistration" },
|
|
{ "message_id": "1:1516" },
|
|
{ "message_id": "1:2342", "registration_id": "32" },
|
|
{ "error": "NotRegistered"}
|
|
]
|
|
}');
|
|
|
|
$client = Mockery::mock(Client::class);
|
|
$client->shouldReceive('request')->once()->andReturn($response);
|
|
|
|
$fcm = new FCMSender($client, 'http://test.test');
|
|
$this->setExpectedException(\LaravelFCM\Response\Exceptions\InvalidRequestException::class);
|
|
$fcm->sendTo([]);
|
|
}
|
|
}
|