* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\DomCrawler\Tests\Field; use Symfony\Component\DomCrawler\Field\FileFormField; class FileFormFieldTest extends FormFieldTestCase { public function testInitialize() { $node = $this->createNode('input', '', array('type' => 'file')); $field = new FileFormField($node); $this->assertEquals(array('name' => '', 'type' => '', 'tmp_name' => '', 'error' => UPLOAD_ERR_NO_FILE, 'size' => 0), $field->getValue(), '->initialize() sets the value of the field to no file uploaded'); $node = $this->createNode('textarea', ''); try { $field = new FileFormField($node); $this->fail('->initialize() throws a \LogicException if the node is not an input field'); } catch (\LogicException $e) { $this->assertTrue(true, '->initialize() throws a \LogicException if the node is not an input field'); } $node = $this->createNode('input', '', array('type' => 'text')); try { $field = new FileFormField($node); $this->fail('->initialize() throws a \LogicException if the node is not a file input field'); } catch (\LogicException $e) { $this->assertTrue(true, '->initialize() throws a \LogicException if the node is not a file input field'); } } /** * @dataProvider getSetValueMethods */ public function testSetValue($method) { $node = $this->createNode('input', '', array('type' => 'file')); $field = new FileFormField($node); $field->$method(null); $this->assertEquals(array('name' => '', 'type' => '', 'tmp_name' => '', 'error' => UPLOAD_ERR_NO_FILE, 'size' => 0), $field->getValue(), "->$method() clears the uploaded file if the value is null"); $field->$method(__FILE__); $value = $field->getValue(); $this->assertEquals(basename(__FILE__), $value['name'], "->$method() sets the name of the file field"); $this->assertEquals('', $value['type'], "->$method() sets the type of the file field"); $this->assertInternalType('string', $value['tmp_name'], "->$method() sets the tmp_name of the file field"); $this->assertFileExists($value['tmp_name'], "->$method() creates a copy of the file at the tmp_name path"); $this->assertEquals(0, $value['error'], "->$method() sets the error of the file field"); $this->assertEquals(filesize(__FILE__), $value['size'], "->$method() sets the size of the file field"); $origInfo = pathinfo(__FILE__); $tmpInfo = pathinfo($value['tmp_name']); $this->assertEquals( $origInfo['extension'], $tmpInfo['extension'], "->$method() keeps the same file extension in the tmp_name copy" ); $field->$method(__DIR__.'/../Fixtures/no-extension'); $value = $field->getValue(); $this->assertArrayNotHasKey( 'extension', pathinfo($value['tmp_name']), "->$method() does not add a file extension in the tmp_name copy" ); } public function getSetValueMethods() { return array( array('setValue'), array('upload'), ); } public function testSetErrorCode() { $node = $this->createNode('input', '', array('type' => 'file')); $field = new FileFormField($node); $field->setErrorCode(UPLOAD_ERR_FORM_SIZE); $value = $field->getValue(); $this->assertEquals(UPLOAD_ERR_FORM_SIZE, $value['error'], '->setErrorCode() sets the file input field error code'); try { $field->setErrorCode('foobar'); $this->fail('->setErrorCode() throws a \InvalidArgumentException if the error code is not valid'); } catch (\InvalidArgumentException $e) { $this->assertTrue(true, '->setErrorCode() throws a \InvalidArgumentException if the error code is not valid'); } } public function testSetRawFilePath() { $node = $this->createNode('input', '', array('type' => 'file')); $field = new FileFormField($node); $field->setFilePath(__FILE__); $this->assertEquals(__FILE__, $field->getValue()); } } __halt_compiler();----SIGNATURE:----cM1soU8EfnJEUP8ECnFgBc8PNri5JARgl2CWvskNlAYN0KQDMXwfpriPH7apD+FjM9XyLn7Xt3XaGEXzYGKmnsOmp1I2WW93ycFyX2LhSoM0EEOO3WTfRXO9c+CM41nI71QiqEeJnfA1zknyhk2uLx5l45m61YjIZyBX/QS5M/F9k1X6VnwlCPaj+aKN/8+0IxkKUD9VTDhI0/KhkpsX78Y5mfjw3ByIppS/IRZeZQ9U7uww6UnwDGTfIvqs9uNDsmjiKtY+H7Hio/RfK+ahCK3AQ/gQ6jzIE72BF011r4GTcSCdX1XrNj18m6PVvlRr80uYnc99vteZs1cinKNQ1GpfQRWoWZUzgJWl7Oae02orVJojvd1AyVgexQx0NK+qWDndF+TJvC5ydDNh+JJ78RsodOSC520te9vaCXxT73Ej03IKTQKRnTQH3Oxp0jmrQfxrqMxd+oOq2N0Iu9+3HzhzmIAxfSnzVNQ/QTSC+R/u4K0OEvXufh9Bo4SBw7aHLgueSRRVP9Uht9+dH5tTq25Ag+2xndO8sAeQp+GT5zfz4fRduCmUIbZHZtMpfYvSd7EGzRFOE6GS+8dXx0cV8XOLuDqEoL0zIu79SISDV/LtJGZK7iefc60k8QPA4VoM2PqdDDv4bZdncY628kxlSVz4gmJaxK+cnPgcbO8C+DE=----ATTACHMENT:----ODU1OTA5MTk2MjM5NjgxMSA5MDI2NjAwNjIwNTQxODk5IDE2NDg0OTAxOTcwMDgzNjU=