![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/Unserialize/Test/Unit/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\Unserialize\Test\Unit; use Magento\Framework\Serialize\Serializer\Serialize; use Magento\Framework\Unserialize\Unserialize; use PHPUnit\Framework\Exception; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * Test unserializer that does not unserialize objects. */ class UnserializeTest extends TestCase { /** * @var Serialize|MockObject */ private $serializerMock; /** * @var Unserialize */ private $unserialize; protected function setUp(): void { $this->serializerMock = $this->getMockBuilder(Serialize::class) ->setMethods( ['serialize', 'unserialize'] ) ->getMock(); $this->unserialize = new Unserialize($this->serializerMock); } public function testUnserializeArray() { $data = ['foo' => 'bar', 1, 4]; $serializedData = 'serialzied data'; $this->serializerMock->expects($this->any()) ->method('unserialize') ->with($serializedData) ->willReturn($data); $this->assertEquals( $data, $this->unserialize->unserialize($serializedData) ); } /** * @param string $serialized The string containing serialized object * @dataProvider unserializeObjectDataProvider */ public function testUnserializeObject($serialized) { $this->expectException('Exception'); $this->expectExceptionMessage('String contains serialized object'); $this->expectException(Exception::class); $this->expectExceptionMessage( 'String contains serialized object' ); $this->assertFalse($this->unserialize->unserialize($serialized)); } /** * @return array */ public function unserializeObjectDataProvider() { return [ // Upper and lower case serialized object indicators, nested in array ['a:2:{i:0;s:3:"foo";i:1;O:6:"Object":1:{s:11:"Objectvar";i:123;}}'], ['a:2:{i:0;s:3:"foo";i:1;o:6:"Object":1:{s:11:"Objectvar";i:123;}}'], ['a:2:{i:0;s:3:"foo";i:1;c:6:"Object":1:{s:11:"Objectvar";i:123;}}'], ['a:2:{i:0;s:3:"foo";i:1;C:6:"Object":1:{s:11:"Objectvar";i:123;}}'], // Positive, negative signs on object length, non-nested ['o:+6:"Object":1:{s:11:"Objectvar";i:123;}'], ['o:-6:"Object":1:{s:11:"Objectvar";i:123;}'] ]; } }