* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form\Tests; use Symfony\Component\Form\NativeRequestHandler; /** * @author Bernhard Schussek */ class NativeRequestHandlerTest extends AbstractRequestHandlerTest { private static $serverBackup; public static function setUpBeforeClass() { self::$serverBackup = $_SERVER; } protected function setUp() { parent::setUp(); $_GET = array(); $_POST = array(); $_FILES = array(); $_SERVER = array( // PHPUnit needs this entry 'SCRIPT_NAME' => self::$serverBackup['SCRIPT_NAME'], ); } protected function tearDown() { parent::tearDown(); $_GET = array(); $_POST = array(); $_FILES = array(); $_SERVER = self::$serverBackup; } /** * @expectedException \Symfony\Component\Form\Exception\UnexpectedTypeException */ public function testRequestShouldBeNull() { $this->requestHandler->handleRequest($this->getMockForm('name', 'GET'), 'request'); } public function testMethodOverrideHeaderTakesPrecedenceIfPost() { $form = $this->getMockForm('param1', 'PUT'); $this->setRequestData('POST', array( 'param1' => 'DATA', )); $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] = 'PUT'; $form->expects($this->once()) ->method('submit') ->with('DATA'); $this->requestHandler->handleRequest($form, $this->request); } public function testConvertEmptyUploadedFilesToNull() { $form = $this->getMockForm('param1', 'POST', false); $this->setRequestData('POST', array(), array('param1' => array( 'name' => '', 'type' => '', 'tmp_name' => '', 'error' => UPLOAD_ERR_NO_FILE, 'size' => 0, ))); $form->expects($this->once()) ->method('submit') ->with($this->identicalTo(null)); $this->requestHandler->handleRequest($form, $this->request); } public function testFixBuggyFilesArray() { $form = $this->getMockForm('param1', 'POST', false); $this->setRequestData('POST', array(), array('param1' => array( 'name' => array( 'field' => 'upload.txt', ), 'type' => array( 'field' => 'text/plain', ), 'tmp_name' => array( 'field' => 'owfdskjasdfsa', ), 'error' => array( 'field' => UPLOAD_ERR_OK, ), 'size' => array( 'field' => 100, ), ))); $form->expects($this->once()) ->method('submit') ->with(array( 'field' => array( 'name' => 'upload.txt', 'type' => 'text/plain', 'tmp_name' => 'owfdskjasdfsa', 'error' => UPLOAD_ERR_OK, 'size' => 100, ), )); $this->requestHandler->handleRequest($form, $this->request); } public function testFixBuggyNestedFilesArray() { $form = $this->getMockForm('param1', 'POST'); $this->setRequestData('POST', array(), array('param1' => array( 'name' => array( 'field' => array('subfield' => 'upload.txt'), ), 'type' => array( 'field' => array('subfield' => 'text/plain'), ), 'tmp_name' => array( 'field' => array('subfield' => 'owfdskjasdfsa'), ), 'error' => array( 'field' => array('subfield' => UPLOAD_ERR_OK), ), 'size' => array( 'field' => array('subfield' => 100), ), ))); $form->expects($this->once()) ->method('submit') ->with(array( 'field' => array( 'subfield' => array( 'name' => 'upload.txt', 'type' => 'text/plain', 'tmp_name' => 'owfdskjasdfsa', 'error' => UPLOAD_ERR_OK, 'size' => 100, ), ), )); $this->requestHandler->handleRequest($form, $this->request); } public function testMethodOverrideHeaderIgnoredIfNotPost() { $form = $this->getMockForm('param1', 'POST'); $this->setRequestData('GET', array( 'param1' => 'DATA', )); $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] = 'PUT'; $form->expects($this->never()) ->method('submit'); $this->requestHandler->handleRequest($form, $this->request); } protected function setRequestData($method, $data, $files = array()) { if ('GET' === $method) { $_GET = $data; $_FILES = array(); } else { $_POST = $data; $_FILES = $files; } $_SERVER = array( 'REQUEST_METHOD' => $method, // PHPUnit needs this entry 'SCRIPT_NAME' => self::$serverBackup['SCRIPT_NAME'], ); } protected function getRequestHandler() { return new NativeRequestHandler($this->serverParams); } protected function getMockFile($suffix = '') { return array( 'name' => 'upload'.$suffix.'.txt', 'type' => 'text/plain', 'tmp_name' => 'owfdskjasdfsa'.$suffix, 'error' => UPLOAD_ERR_OK, 'size' => 100, ); } protected function getInvalidFile() { return array( 'name' => 'upload.txt', 'type' => 'text/plain', 'tmp_name' => 'owfdskjasdfsa', 'error' => '0', 'size' => '100', ); } } __halt_compiler();----SIGNATURE:----Dp39gExlsKlIkpcZoJdpR/cZfRaXKBTBuYwLuHlIeVzc51bTBqt/ircAr0YRF4lK5UVVYxX9SugDAcLHn5NxQJdqy9qe5yz4bK67bvKIiaX1nH/b28/L2S3oQQLmwR+L0kEAGdCLisi10VT/1yyJ7Jv+PRirNi71oULesT5bhGJvw/3/R08MYEgawccMYQdo/iLXpjwYE8WtJIXPGo1C6ENd5SQtZB/Mh2kzUP15Rh2VYr7cuj1MZIP2EoKYk9u6O0vApmd6TaRnvpWvACFOlkKg88GK/D87mDsVCdelYsSD82geKZz5+I5zqCuP4ZIni4rAuWkmC0AeHg+5seTTpMzvdQi0LRBCknIoikoqLqWUUlKdDZYLDsM3OC4NijObjyJJPG3ac9C0uJlpVwmeA5pO/H/ZTHPGpR8c4oumHBhjv/5vri7+A5IBW0mwQs7RWSovsUd6JnVSvJmJaZ/rTaWzkRsi/jx8N05X2IvAtpjVZicZCEvKyHBOlzHyDrLJLWyGDn3ikmULqxIAjjJqFGjxmZCslOTcDDEo80IioirMHRykyhvbffuwrw0bB712FPKXoi0bbEonmxJVFAxVvifmoJAsuugQMWqO6Kvt0CLEPx80DCu5iWGhPS2i9z8fZUdT+ghhPv5Qgv95/9XUWWpr0eWqYNYR9H34I098Ddg=----ATTACHMENT:----OTIyNDY5NTczNzY0ODM1OSA3MzE1MjAxOTc3Njg4NjI3IDUzNzI3NDkwMDYwMjAzMDM=