223 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			223 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php namespace LaravelFCM\Mocks;
 | |
| 
 | |
| use LaravelFCM\Response\DownstreamResponse;
 | |
| use LaravelFCM\Response\DownstreamResponseContract;
 | |
| 
 | |
| /**
 | |
|  * Class MockDownstreamResponse **Only use it for testing**
 | |
|  *
 | |
|  * @package LaravelFCM\Response
 | |
|  */
 | |
| class MockDownstreamResponse implements DownstreamResponseContract {
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	 * @internal
 | |
| 	 *
 | |
| 	 * @var int
 | |
| 	 */
 | |
| 	protected $numberTokensSuccess = 0;
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	 * @internal
 | |
| 	 *
 | |
| 	 * @var
 | |
| 	 */
 | |
| 	protected $messageId;
 | |
| 
 | |
| 	/**
 | |
| 	 * @internal
 | |
| 	 *
 | |
| 	 * @var array
 | |
| 	 */
 | |
| 	protected $tokensToDelete = [];
 | |
| 
 | |
| 	/**
 | |
| 	 * @internal
 | |
| 	 *
 | |
| 	 * @var array
 | |
| 	 */
 | |
| 
 | |
| 	protected $tokensToModify = [];
 | |
| 	/**
 | |
| 	 * @internal
 | |
| 	 *
 | |
| 	 * @var array
 | |
| 	 */
 | |
| 
 | |
| 	protected $tokensToRetry = [];
 | |
| 
 | |
| 	/**
 | |
| 	 * @internal
 | |
| 	 *
 | |
| 	 * @var array
 | |
| 	 */
 | |
| 	protected $tokensWithError = [];
 | |
| 
 | |
| 	/**
 | |
| 	 * @internal
 | |
| 	 * @var bool
 | |
| 	 */
 | |
| 	protected $hasMissingToken = false;
 | |
| 
 | |
| 	/**
 | |
| 	 * DownstreamResponse constructor.
 | |
| 	 *
 | |
| 	 * @param $numberSuccess
 | |
| 	 */
 | |
| 	public function __construct($numberSuccess)
 | |
| 	{
 | |
| 		$this->numberTokensSuccess = $numberSuccess;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Not using it
 | |
| 	 *
 | |
| 	 * @param DownstreamResponse $response
 | |
| 	 *
 | |
| 	 * @throws \Exception
 | |
| 	 */
 | |
| 	public function merge(DownstreamResponse $response)
 | |
| 	{
 | |
| 		throw new \Exception('You cannot use this method for mocking response');
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get the number of device reached with success + numberTokenToModify
 | |
| 	 *
 | |
| 	 * @return int
 | |
| 	 */
 | |
| 	public function numberSuccess()
 | |
| 	{
 | |
| 		return $this->numberTokensSuccess + count($this->tokensToModify);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get the number of device which thrown an error
 | |
| 	 *
 | |
| 	 * @return int
 | |
| 	 */public function numberFailure()
 | |
| 	{
 | |
| 		return count($this->tokensToDelete()) + count($this->tokensWithError);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get the number of device that you need to modify their token
 | |
| 	 *
 | |
| 	 * @return int
 | |
| 	 */
 | |
| 	public function numberModification()
 | |
| 	{
 | |
| 		return count($this->tokensToModify());
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Add a token to delete
 | |
| 	 *
 | |
| 	 * @param $token
 | |
| 	 */
 | |
| 	public function addTokenToDelete($token)
 | |
| 	{
 | |
| 		$this->tokensToDelete[] = $token;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * get token to delete
 | |
| 	 * remove all tokens returned by this method in your database
 | |
| 	 *
 | |
| 	 * @return array
 | |
| 	 */
 | |
| 	public function tokensToDelete()
 | |
| 	{
 | |
| 		return $this->tokensToDelete;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Add a token to modify
 | |
| 	 *
 | |
| 	 * @param $oldToken
 | |
| 	 * @param $newToken
 | |
| 	 */
 | |
| 	public function addTokenToModify($oldToken, $newToken)
 | |
| 	{
 | |
| 		$this->tokensToModify[$oldToken] = $newToken;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * get token to modify
 | |
| 	 * key: oldToken
 | |
| 	 * value: new token
 | |
| 	 * find the old token in your database and replace it with the new one
 | |
| 	 *
 | |
| 	 * @return array
 | |
| 	 */
 | |
| 	public function tokensToModify()
 | |
| 	{
 | |
| 		return $this->tokensToModify;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Add a token to retry
 | |
| 	 *
 | |
| 	 * @param $token
 | |
| 	 */
 | |
| 	public function addTokenToRetry($token)
 | |
| 	{
 | |
| 		$this->tokensToRetry[] = $token;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get tokens that you should resend using exponential backoof
 | |
| 	 *
 | |
| 	 * @return array
 | |
| 	 */
 | |
| 	public function tokensToRetry()
 | |
| 	{
 | |
| 		return $this->tokensToRetry;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Add a token to errors
 | |
| 	 *
 | |
| 	 * @param $token
 | |
| 	 * @param $message
 | |
| 	 */
 | |
| 	public function addTokenWithError($token, $message)
 | |
| 	{
 | |
| 		$this->tokensWithError[$token] = $message;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get tokens that thrown an error
 | |
| 	 * key : token
 | |
| 	 * value : error
 | |
| 	 * In production, remove these tokens from you database
 | |
| 	 *
 | |
| 	 * @return array
 | |
| 	 */
 | |
| 	public function tokensWithError()
 | |
| 	{
 | |
| 		return $this->tokensWithError;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * change missing token state
 | |
| 	 * @param $hasMissingToken
 | |
| 	 */
 | |
| 	public function setMissingToken($hasMissingToken)
 | |
| 	{
 | |
| 		$this->hasMissingToken = $hasMissingToken;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * check if missing tokens was given to the request
 | |
| 	 * If true, remove all the empty token in your database
 | |
| 	 *
 | |
| 	 * @return bool
 | |
| 	 */
 | |
| 	public function hasMissingToken()
 | |
| 	{
 | |
| 		return $this->hasMissingToken;
 | |
| 	}
 | |
| } | 
