123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * 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 <bschussek@gmail.com>
- */
- 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',
- );
- }
- }
|