mirror of
https://github.com/predis/predis.git
synced 2026-08-24 17:49:34 +00:00
a0487ec5f4
This could be triggered when passing an array with "holes" to variadic commands. Connection classes based on the protocol serialized exposed by phpiredis were not affected by this bug. Fixes #316.
88 lines
2.2 KiB
PHP
88 lines
2.2 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Predis package.
|
|
*
|
|
* (c) Daniele Alessandri <suppakilla@gmail.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Predis\Protocol\Text;
|
|
|
|
use PredisTestCase;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
class RequestSerializerTest extends PredisTestCase
|
|
{
|
|
/**
|
|
* @group disconnected
|
|
*/
|
|
public function testSerializerIdWithNoArguments()
|
|
{
|
|
$serializer = new RequestSerializer();
|
|
|
|
$command = $this->getMock('Predis\Command\CommandInterface');
|
|
|
|
$command->expects($this->once())
|
|
->method('getId')
|
|
->will($this->returnValue('PING'));
|
|
|
|
$command->expects($this->once())
|
|
->method('getArguments')
|
|
->will($this->returnValue(array()));
|
|
|
|
$result = $serializer->serialize($command);
|
|
|
|
$this->assertSame("*1\r\n$4\r\nPING\r\n", $result);
|
|
}
|
|
|
|
/**
|
|
* @group disconnected
|
|
*/
|
|
public function testSerializerIdWithArguments()
|
|
{
|
|
$serializer = new RequestSerializer();
|
|
|
|
$command = $this->getMock('Predis\Command\CommandInterface');
|
|
|
|
$command->expects($this->once())
|
|
->method('getId')
|
|
->will($this->returnValue('SET'));
|
|
|
|
$command->expects($this->once())
|
|
->method('getArguments')
|
|
->will($this->returnValue(array('key', 'value')));
|
|
|
|
$result = $serializer->serialize($command);
|
|
|
|
$this->assertSame("*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n", $result);
|
|
}
|
|
|
|
/**
|
|
* @group disconnected
|
|
*/
|
|
public function testSerializerDoesNotBreakOnArgumentsWithHoles()
|
|
{
|
|
$serializer = new RequestSerializer();
|
|
|
|
$command = $this->getMock('Predis\Command\CommandInterface');
|
|
|
|
$command->expects($this->once())
|
|
->method('getId')
|
|
->will($this->returnValue('DEL'));
|
|
|
|
$command->expects($this->once())
|
|
->method('getArguments')
|
|
->will($this->returnValue(array(0 => 'key:1', 2 => 'key:2')));
|
|
|
|
$result = $serializer->serialize($command);
|
|
|
|
$this->assertSame("*3\r\n$3\r\nDEL\r\n$5\r\nkey:1\r\n$5\r\nkey:2\r\n", $result);
|
|
}
|
|
|
|
}
|