* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler; /** * @requires extension memcached * @group time-sensitive */ class MemcachedSessionHandlerTest extends TestCase { const PREFIX = 'prefix_'; const TTL = 1000; /** * @var MemcachedSessionHandler */ protected $storage; protected $memcached; protected function setUp() { if (defined('HHVM_VERSION')) { $this->markTestSkipped('PHPUnit_MockObject cannot mock the Memcached class on HHVM. See https://github.com/sebastianbergmann/phpunit-mock-objects/pull/289'); } parent::setUp(); if (version_compare(phpversion('memcached'), '2.2.0', '>=') && version_compare(phpversion('memcached'), '3.0.0b1', '<')) { $this->markTestSkipped('Tests can only be run with memcached extension 2.1.0 or lower, or 3.0.0b1 or higher'); } $this->memcached = $this->getMockBuilder('Memcached')->getMock(); $this->storage = new MemcachedSessionHandler( $this->memcached, array('prefix' => self::PREFIX, 'expiretime' => self::TTL) ); } protected function tearDown() { $this->memcached = null; $this->storage = null; parent::tearDown(); } public function testOpenSession() { $this->assertTrue($this->storage->open('', '')); } public function testCloseSession() { $this->assertTrue($this->storage->close()); } public function testReadSession() { $this->memcached ->expects($this->once()) ->method('get') ->with(self::PREFIX.'id') ; $this->assertEquals('', $this->storage->read('id')); } public function testWriteSession() { $this->memcached ->expects($this->once()) ->method('set') ->with(self::PREFIX.'id', 'data', $this->equalTo(time() + self::TTL, 2)) ->will($this->returnValue(true)) ; $this->assertTrue($this->storage->write('id', 'data')); } public function testDestroySession() { $this->memcached ->expects($this->once()) ->method('delete') ->with(self::PREFIX.'id') ->will($this->returnValue(true)) ; $this->assertTrue($this->storage->destroy('id')); } public function testGcSession() { $this->assertTrue($this->storage->gc(123)); } /** * @dataProvider getOptionFixtures */ public function testSupportedOptions($options, $supported) { try { new MemcachedSessionHandler($this->memcached, $options); $this->assertTrue($supported); } catch (\InvalidArgumentException $e) { $this->assertFalse($supported); } } public function getOptionFixtures() { return array( array(array('prefix' => 'session'), true), array(array('expiretime' => 100), true), array(array('prefix' => 'session', 'expiretime' => 200), true), array(array('expiretime' => 100, 'foo' => 'bar'), false), ); } public function testGetConnection() { $method = new \ReflectionMethod($this->storage, 'getMemcached'); $method->setAccessible(true); $this->assertInstanceOf('\Memcached', $method->invoke($this->storage)); } } __halt_compiler();----SIGNATURE:----pgFGaxVVRv8/mTItwMr7L1ek2L4ci4RJhYAyzL7HgjcN+QQQtVyDx3qtdJhUtvdUsw2Gc+sopiRGYQG/TFw+AGwzazLHDM6o3/WD6tA7Y8Hzw6FTXlzCTB368hZE/Nc+PW5SR/HfvAX3ZcXY5aUX3yyzMomz4vA1DxDo6plNLndVLIZJLemypV3U1CohrnmLgvuPk8GfusweJK2n/BPmf/p9Rp8mbOxtSE5yANKhQdMWWrJxytT1FXnoYbz9it46zoNkCy8GKk/EL+dY6Anwh5zxRrqmlyCb40BBivDAraLahRqwFptrSxDz9MSxpqI3au1J3J3sFvB7mRJnaSq6aowurT2GSNdgrKifu0iO670qYL9nrBMUWQmRD1SAFuKnXh5BrV1BU8MolnNleY0N1qNkQuCl9H/Gh0ZRnIDmqWxqJVWnyk2hutRy0XS0sqgc8w05zAU9Ru0Wx0gkHfkm4r7B7sPhKu60ypd9FcbsRoUVNxusNZXWtwFJEZsbepvdOtJwAsIm8RR1XCkiq72bm3ob4BPcvtO8TOnnv0uLLJgBFw4zoofX/BNGiVmudRyCC591jkroH8VO2CiA+gwtHnEPXKdqfOq4xn6tMqgw0ZjkACIixwTGgvCZnFvvTjkU7/LiaTpKBBVvpk86f6n+wEpihLzDGugF9PM4NwcDK1c=----ATTACHMENT:----MjA5MjY4MDE2NDczMjA4NyAxMzU5ODgyNzcwNDkyNjQ2IDgxODE5MTY0MDM1NzU3NDY=