Laravel version update

Laravel version update
This commit is contained in:
Manish Verma
2018-08-06 18:48:58 +05:30
parent d143048413
commit 126fbb0255
13678 changed files with 1031482 additions and 778530 deletions

View File

@@ -0,0 +1,49 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Service
*/
namespace ZendServiceTest\Apple\Apns;
use PHPUnit\Framework\TestCase;
use ZendServiceTest\Apple\Apns\TestAsset\FeedbackClient;
/**
* @category ZendService
* @package ZendService_Apple
* @subpackage UnitTests
* @group ZendService
* @group ZendService_Apple
* @group ZendService_Apple_Apns
*/
class FeedbackClientTest extends TestCase
{
public function setUp()
{
$this->apns = new FeedbackClient();
}
protected function setupValidBase()
{
$this->apns->open(FeedbackClient::SANDBOX_URI, __DIR__ . '/TestAsset/certificate.pem');
}
public function testFeedback()
{
$this->setupValidBase();
$time = time();
$token = 'abc123';
$length = strlen($token) / 2;
$this->apns->setReadResponse(pack('NnH*', $time, $length, $token));
$response = $this->apns->feedback();
$this->assertCount(1, $response);
$feedback = array_shift($response);
$this->assertEquals($time, $feedback->getTime());
$this->assertEquals($token, $feedback->getToken());
}
}

View File

@@ -0,0 +1,177 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @category ZendService
* @package ZendService_Apple
* @subpackage UnitTests
*/
namespace ZendServiceTest\Apple\Apns;
use PHPUnit\Framework\TestCase;
use ZendServiceTest\Apple\Apns\TestAsset\MessageClient;
use ZendService\Apple\Apns\Message;
use ZendService\Apple\Apns\Response\Message as MessageResponse;
/**
* @category ZendService
* @package ZendService_Apple
* @subpackage UnitTests
* @group ZendService
* @group ZendService_Apple
* @group ZendService_Apple_Apns
*/
class MessageClientTest extends TestCase
{
public function setUp()
{
$this->apns = new MessageClient();
$this->message = new Message();
}
protected function setupValidBase()
{
$this->apns->open(MessageClient::SANDBOX_URI, __DIR__ . '/TestAsset/certificate.pem');
$this->message->setToken('662cfe5a69ddc65cdd39a1b8f8690647778204b064df7b264e8c4c254f94fdd8');
$this->message->setId(time());
$this->message->setAlert('bar');
}
public function testConnectThrowsExceptionOnInvalidEnvironment()
{
$this->expectException('InvalidArgumentException');
$this->apns->open(5, __DIR__ . '/TestAsset/certificate.pem');
}
public function testSetCertificateThrowsExceptionOnNonString()
{
$this->expectException('InvalidArgumentException');
$this->apns->open(MessageClient::PRODUCTION_URI, ['foo']);
}
public function testSetCertificateThrowsExceptionOnMissingFile()
{
$this->expectException('InvalidArgumentException');
$this->apns->open(MessageClient::PRODUCTION_URI, 'foo');
}
public function testSetCertificatePassphraseThrowsExceptionOnNonString()
{
$this->expectException('InvalidArgumentException');
$this->apns->open(MessageClient::PRODUCTION_URI, __DIR__ . '/TestAsset/certificate.pem', ['foo']);
}
public function testOpen()
{
$ret = $this->apns->open(MessageClient::SANDBOX_URI, __DIR__ . '/TestAsset/certificate.pem');
$this->assertEquals($this->apns, $ret);
$this->assertTrue($this->apns->isConnected());
}
public function testClose()
{
$this->apns->open(MessageClient::SANDBOX_URI, __DIR__ . '/TestAsset/certificate.pem');
$this->apns->close();
$this->assertFalse($this->apns->isConnected());
}
public function testOpenWhenAlreadyOpenThrowsException()
{
$this->expectException('RuntimeException');
$this->apns->open(MessageClient::SANDBOX_URI, __DIR__ . '/TestAsset/certificate.pem');
$this->apns->open(MessageClient::SANDBOX_URI, __DIR__ . '/TestAsset/certificate.pem');
}
public function testSendReturnsTrueOnSuccess()
{
$this->setupValidBase();
$response = $this->apns->send($this->message);
$this->assertEquals(MessageResponse::RESULT_OK, $response->getCode());
$this->assertNull($response->getId());
}
public function testSendResponseOnProcessingError()
{
$this->setupValidBase();
$this->apns->setReadResponse(pack('CCN*', 1, 1, 12345));
$response = $this->apns->send($this->message);
$this->assertEquals(MessageResponse::RESULT_PROCESSING_ERROR, $response->getCode());
$this->assertEquals(12345, $response->getId());
}
public function testSendResponseOnMissingToken()
{
$this->setupValidBase();
$this->apns->setReadResponse(pack('CCN*', 2, 2, 12345));
$response = $this->apns->send($this->message);
$this->assertEquals(MessageResponse::RESULT_MISSING_TOKEN, $response->getCode());
$this->assertEquals(12345, $response->getId());
}
public function testSendResponseOnMissingTopic()
{
$this->setupValidBase();
$this->apns->setReadResponse(pack('CCN*', 3, 3, 12345));
$response = $this->apns->send($this->message);
$this->assertEquals(MessageResponse::RESULT_MISSING_TOPIC, $response->getCode());
$this->assertEquals(12345, $response->getId());
}
public function testSendResponseOnMissingPayload()
{
$this->setupValidBase();
$this->apns->setReadResponse(pack('CCN*', 4, 4, 12345));
$response = $this->apns->send($this->message);
$this->assertEquals(MessageResponse::RESULT_MISSING_PAYLOAD, $response->getCode());
$this->assertEquals(12345, $response->getId());
}
public function testSendResponseOnInvalidTokenSize()
{
$this->setupValidBase();
$this->apns->setReadResponse(pack('CCN*', 5, 5, 12345));
$response = $this->apns->send($this->message);
$this->assertEquals(MessageResponse::RESULT_INVALID_TOKEN_SIZE, $response->getCode());
$this->assertEquals(12345, $response->getId());
}
public function testSendResponseOnInvalidTopicSize()
{
$this->setupValidBase();
$this->apns->setReadResponse(pack('CCN*', 6, 6, 12345));
$response = $this->apns->send($this->message);
$this->assertEquals(MessageResponse::RESULT_INVALID_TOPIC_SIZE, $response->getCode());
$this->assertEquals(12345, $response->getId());
}
public function testSendResponseOnInvalidPayloadSize()
{
$this->setupValidBase();
$this->apns->setReadResponse(pack('CCN*', 7, 7, 12345));
$response = $this->apns->send($this->message);
$this->assertEquals(MessageResponse::RESULT_INVALID_PAYLOAD_SIZE, $response->getCode());
$this->assertEquals(12345, $response->getId());
}
public function testSendResponseOnInvalidToken()
{
$this->setupValidBase();
$this->apns->setReadResponse(pack('CCN*', 8, 8, 12345));
$response = $this->apns->send($this->message);
$this->assertEquals(MessageResponse::RESULT_INVALID_TOKEN, $response->getCode());
$this->assertEquals(12345, $response->getId());
}
public function testSendResponseOnUnknownError()
{
$this->setupValidBase();
$this->apns->setReadResponse(pack('CCN*', 255, 255, 12345));
$response = $this->apns->send($this->message);
$this->assertEquals(MessageResponse::RESULT_UNKNOWN_ERROR, $response->getCode());
$this->assertEquals(12345, $response->getId());
}
}

View File

@@ -0,0 +1,343 @@
<?php
/**
* @see https://github.com/zendframework/ZendService_Apple_Apns for the canonical source repository
* @copyright Copyright (c) 2014-2018 Zend Technologies USA Inc. (https://www.zend.com)
* @license https://github.com/zendframework/ZendService_Apple_Apns/blob/master/LICENSE.md New BSD License
*/
namespace ZendServiceTest\Apple\Apns;
use InvalidArgumentException;
use PHPUnit\Framework\TestCase;
use stdClass;
use Zend\Json\Encoder as JsonEncoder;
use ZendService\Apple\Apns\Message;
use ZendService\Apple\Apns\Message\Alert;
/**
* @category ZendService
* @package ZendService_Apple
* @subpackage UnitTests
* @group ZendService
* @group ZendService_Apple
* @group ZendService_Apple_Apns
*/
class MessageTest extends TestCase
{
public function setUp()
{
$this->alert = new Alert();
$this->message = new Message();
}
public function testSetAlertTextReturnsCorrectly()
{
$text = 'my alert';
$ret = $this->message->setAlert($text);
$this->assertInstanceOf('ZendService\Apple\Apns\Message', $ret);
$checkText = $this->message->getAlert();
$this->assertInstanceOf('ZendService\Apple\Apns\Message\Alert', $checkText);
$this->assertEquals($text, $checkText->getBody());
}
public function testSetAlertThrowsExceptionOnTextNonString()
{
$this->expectException(InvalidArgumentException::class);
$this->message->setAlert([]);
}
public function testSetAlertThrowsExceptionOnActionLocKeyNonString()
{
$this->expectException(InvalidArgumentException::class);
$this->alert->setActionLocKey([]);
}
public function testSetAlertThrowsExceptionOnLocKeyNonString()
{
$this->expectException(InvalidArgumentException::class);
$this->alert->setLocKey([]);
}
public function testSetAlertThrowsExceptionOnLaunchImageNonString()
{
$this->expectException(InvalidArgumentException::class);
$this->alert->setLaunchImage([]);
}
public function testSetAlertThrowsExceptionOnTitleNonString()
{
$this->expectException(InvalidArgumentException::class);
$this->alert->setTitle([]);
}
public function testSetAlertThrowsExceptionOnTitleLocKeyNonString()
{
$this->expectException(InvalidArgumentException::class);
$this->alert->setTitleLocKey([]);
}
public function testSetBadgeReturnsCorrectNumber()
{
$num = 5;
$this->message->setBadge($num);
$this->assertEquals($num, $this->message->getBadge());
}
public function testSetBadgeNonNumericThrowsException()
{
$this->expectException(InvalidArgumentException::class);
$this->message->setBadge('string!');
}
public function testSetBadgeAllowsNull()
{
$this->message->setBadge(null);
$this->assertNull($this->message->getBadge());
}
public function testSetExpireReturnsInteger()
{
$expire = 100;
$this->message->setExpire($expire);
$this->assertEquals($expire, $this->message->getExpire());
}
public function testSetExpireNonNumericThrowsException()
{
$this->expectException(InvalidArgumentException::class);
$this->message->setExpire('sting!');
}
public function testSetSoundReturnsString()
{
$sound = 'test';
$this->message->setSound($sound);
$this->assertEquals($sound, $this->message->getSound());
}
public function testSetSoundThrowsExceptionOnNonScalar()
{
$this->expectException(InvalidArgumentException::class);
$this->message->setSound([]);
}
public function testSetSoundThrowsExceptionOnNonString()
{
$this->expectException(InvalidArgumentException::class);
$this->message->setSound(12345);
}
/**
* @dataProvider provideSetMutableContentThrowsExceptionOnNonIntegerOneOrNullData
*
* @param mixed $value
*/
public function testSetMutableContentThrowsExceptionOnNonIntegerOneAndNull($value)
{
$this->expectException(InvalidArgumentException::class);
$this->message->setMutableContent($value);
}
/**
* @return array
*/
public function provideSetMutableContentThrowsExceptionOnNonIntegerOneOrNullData()
{
return [
'unsupported positive integer' => ['value' => 2],
'zero integer' => ['value' => 0],
'negative integer' => ['value' => -1],
'boolean' => ['value' => true],
'string' => ['value' => 'any string'],
'float' => ['value' => 123.12],
'array' => ['value' => []],
'object' => ['value' => new stdClass()],
];
}
public function testSetMutableContentResultsInCorrectPayloadWithIntegerValue()
{
$value = 1;
$this->message->setMutableContent($value);
$payload = $this->message->getPayload();
$this->assertEquals($value, $payload['aps']['mutable-content']);
}
public function testSetMutableContentResultsInCorrectPayloadWithNullValue()
{
$this->message->setMutableContent(null);
$json = $this->message->getPayloadJson();
$payload = json_decode($json, true);
$this->assertFalse(isset($payload['aps']['mutable-content']));
}
public function testSetContentAvailableThrowsExceptionOnNonInteger()
{
$this->expectException(InvalidArgumentException::class);
$this->message->setContentAvailable("string");
}
public function testGetContentAvailableReturnsCorrectInteger()
{
$value = 1;
$this->message->setContentAvailable($value);
$this->assertEquals($value, $this->message->getContentAvailable());
}
public function testSetContentAvailableResultsInCorrectPayload()
{
$value = 1;
$this->message->setContentAvailable($value);
$payload = $this->message->getPayload();
$this->assertEquals($value, $payload['aps']['content-available']);
}
public function testSetCategoryReturnsString()
{
$category = 'test';
$this->message->setCategory($category);
$this->assertEquals($category, $this->message->getCategory());
}
public function testSetCategoryThrowsExceptionOnNonScalar()
{
$this->expectException(InvalidArgumentException::class);
$this->message->setCategory([]);
}
public function testSetCategoryThrowsExceptionOnNonString()
{
$this->expectException(InvalidArgumentException::class);
$this->message->setCategory(12345);
}
public function testSetUrlArgsReturnsString()
{
$urlArgs = ['path/to/somewhere'];
$this->message->setUrlArgs($urlArgs);
$this->assertEquals($urlArgs, $this->message->getUrlArgs());
}
public function testSetCustomData()
{
$data = ['key' => 'val', 'key2' => [1, 2, 3, 4, 5]];
$this->message->setCustom($data);
$this->assertEquals($data, $this->message->getCustom());
}
public function testAlertConstructor()
{
$alert = new Alert(
'Foo wants to play Bar!',
'PLAY',
'GAME_PLAY_REQUEST_FORMAT',
['Foo', 'Baz'],
'Default.png',
'Alert',
'ALERT',
['Foo', 'Baz']
);
$this->assertEquals('Foo wants to play Bar!', $alert->getBody());
$this->assertEquals('PLAY', $alert->getActionLocKey());
$this->assertEquals('GAME_PLAY_REQUEST_FORMAT', $alert->getLocKey());
$this->assertEquals(['Foo', 'Baz'], $alert->getLocArgs());
$this->assertEquals('Default.png', $alert->getLaunchImage());
$this->assertEquals('Alert', $alert->getTitle());
$this->assertEquals('ALERT', $alert->getTitleLocKey());
$this->assertEquals(['Foo', 'Baz'], $alert->getTitleLocArgs());
}
public function testAlertJsonPayload()
{
$alert = new Alert(
'Foo wants to play Bar!',
'PLAY',
'GAME_PLAY_REQUEST_FORMAT',
['Foo', 'Baz'],
'Default.png',
'Alert',
'ALERT',
['Foo', 'Baz']
);
$payload = $alert->getPayload();
$this->assertArrayHasKey('body', $payload);
$this->assertArrayHasKey('action-loc-key', $payload);
$this->assertArrayHasKey('loc-key', $payload);
$this->assertArrayHasKey('loc-args', $payload);
$this->assertArrayHasKey('launch-image', $payload);
$this->assertArrayHasKey('title', $payload);
$this->assertArrayHasKey('title-loc-key', $payload);
$this->assertArrayHasKey('title-loc-args', $payload);
}
public function testAlertPayloadSendsOnlyBody()
{
$alert = new Alert('Foo wants Bar');
$payload = $alert->getPayload();
$this->assertEquals('Foo wants Bar', $payload);
}
public function testPayloadJsonFormedCorrectly()
{
$text = 'hi=привет';
$this->message->setAlert($text);
$this->message->setId(1);
$this->message->setExpire(100);
$this->message->setToken('0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef');
$payload = $this->message->getPayload();
$this->assertEquals($payload, ['aps' => ['alert' => 'hi=привет']]);
if (defined('JSON_UNESCAPED_UNICODE')) {
$payloadJson = json_encode($payload, JSON_UNESCAPED_UNICODE);
$this->assertEquals($payloadJson, '{"aps":{"alert":"hi=привет"}}');
$length = 35; // 23 + (2 * 6) because UTF-8 (Russian) "привет" contains 2 bytes per letter
$result =
pack(
'CNNnH*',
1,
$this->message->getId(),
$this->message->getExpire(),
32,
$this->message->getToken()
)
. pack('n', $length)
. $payloadJson;
$this->assertEquals($this->message->getPayloadJson(), $result);
} else {
$payloadJson = JsonEncoder::encode($payload);
$this->assertEquals($payloadJson, '{"aps":{"alert":"hi=\u043f\u0440\u0438\u0432\u0435\u0442"}}');
$length = 59; // (23 + (6 * 6) because UTF-8 (Russian) "привет" converts into 6 bytes/letter
$result =
pack(
'CNNnH*',
1,
$this->message->getId(),
$this->message->getExpire(),
32,
$this->message->getToken()
)
. pack('n', $length)
. $payloadJson;
$this->assertEquals($this->message->getPayloadJson(), $result);
}
}
public function testCustomDataPayloadIncludesEmptyApsObject()
{
$data = ['custom' => 'data'];
$expected = array_merge($data, ['aps' => (object) []]);
$this->message->setCustom($data);
$payload = $this->message->getPayload();
$this->assertEquals($expected, $payload);
}
public function testTokensAllowUpperCaseHex()
{
$token = str_repeat('abc1234defABCDEF', 4);
$this->message->setToken($token);
$this->assertSame($token, $this->message->getToken());
}
}

View File

@@ -0,0 +1,109 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Service
*/
namespace ZendServiceTest\Apple\Apns\TestAsset;
use ZendService\Apple\Apns\Exception;
use ZendService\Apple\Apns\Client\Feedback as ZfFeedbackClient;
/**
* Feedback Client Proxy
* This class is utilized for unit testing purposes
*
* @category ZendService
* @package ZendService_Apple
* @subpackage Apns
*/
class FeedbackClient extends ZfFeedbackClient
{
/**
* Read Response
*
* @var string
*/
protected $readResponse;
/**
* Write Response
*
* @var mixed
*/
protected $writeResponse;
/**
* Set the Response
*
* @param string $str
* @return FeedbackClient
*/
public function setReadResponse($str)
{
$this->readResponse = $str;
return $this;
}
/**
* Set the write response
*
* @param mixed $resp
* @return FeedbackClient
*/
public function setWriteResponse($resp)
{
$this->writeResponse = $resp;
return $this;
}
/**
* Connect to Host
*
* @return FeedbackClient
*/
protected function connect($host, array $ssl)
{
return $this;
}
/**
* Return Response
*
* @param string $length
* @return string
*/
protected function read($length = 1024)
{
if (! $this->isConnected()) {
throw new Exception\RuntimeException('You must open the connection prior to reading data');
}
$ret = substr($this->readResponse, 0, $length);
$this->readResponse = null;
return $ret;
}
/**
* Write and Return Length
*
* @param string $payload
* @return int
*/
protected function write($payload)
{
if (! $this->isConnected()) {
throw new Exception\RuntimeException('You must open the connection prior to writing data');
}
$ret = $this->writeResponse;
$this->writeResponse = null;
return (null === $ret) ? strlen($payload) : $ret;
}
}

View File

@@ -0,0 +1,109 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Service
*/
namespace ZendServiceTest\Apple\Apns\TestAsset;
use ZendService\Apple\Apns\Exception;
use ZendService\Apple\Apns\Client\Message as ZfMessageClient;
/**
* Message Client Proxy
* This class is utilized for unit testing purposes
*
* @category ZendService
* @package ZendService_Apple
* @subpackage Apns
*/
class MessageClient extends ZfMessageClient
{
/**
* Read Response
*
* @var string
*/
protected $readResponse;
/**
* Write Response
*
* @var mixed
*/
protected $writeResponse;
/**
* Set the Response
*
* @param string $str
* @return MessageClient
*/
public function setReadResponse($str)
{
$this->readResponse = $str;
return $this;
}
/**
* Set the write response
*
* @param mixed $resp
* @return MessageClient
*/
public function setWriteResponse($resp)
{
$this->writeResponse = $resp;
return $this;
}
/**
* Connect to Host
*
* @return MessageClient
*/
protected function connect($host, array $ssl)
{
return $this;
}
/**
* Return Response
*
* @param string $length
* @return string
*/
protected function read($length = 1024)
{
if (! $this->isConnected()) {
throw new Exception\RuntimeException('You must open the connection prior to reading data');
}
$ret = substr($this->readResponse, 0, $length);
$this->readResponse = null;
return $ret;
}
/**
* Write and Return Length
*
* @param string $payload
* @return int
*/
protected function write($payload)
{
if (! $this->isConnected()) {
throw new Exception\RuntimeException('You must open the connection prior to writing data');
}
$ret = $this->writeResponse;
$this->writeResponse = null;
return (null === $ret) ? strlen($payload) : $ret;
}
}