mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-03 14:54:04 +01:00
148 lines
5.0 KiB
PHP
148 lines
5.0 KiB
PHP
<?php
|
|
|
|
Yii::import('system.web.CUploadedFile');
|
|
|
|
/**
|
|
* Unit test for "system.web.CUploadedFile".
|
|
* @see CUploadedFile
|
|
*/
|
|
class CUploadedFileTest extends CTestCase
|
|
{
|
|
public function setUp()
|
|
{
|
|
$_FILES=array();
|
|
CUploadedFile::reset();
|
|
}
|
|
|
|
public function testGetInstanceByName()
|
|
{
|
|
$inputName='test_name';
|
|
$_FILES[$inputName]=array(
|
|
'name'=>'test_file.dat',
|
|
'type'=>'somemime/type',
|
|
'tmp_name'=>'/tmp/test_file',
|
|
'error'=>UPLOAD_ERR_OK,
|
|
'size'=>100,
|
|
);
|
|
$uploadedFile=CUploadedFile::getInstanceByName($inputName);
|
|
$this->assertTrue(is_object($uploadedFile),'Unable to get uploaded file by name!');
|
|
$this->assertEquals($_FILES[$inputName]['name'],$uploadedFile->getName(),'Wrong name!');
|
|
$this->assertEquals($_FILES[$inputName]['type'],$uploadedFile->getType(),'Wrong type!');
|
|
$this->assertEquals($_FILES[$inputName]['tmp_name'],$uploadedFile->getTempName(),'Wrong temp name!');
|
|
$this->assertEquals($_FILES[$inputName]['error'],$uploadedFile->getError(),'Wrong error!');
|
|
$this->assertEquals($_FILES[$inputName]['size'],$uploadedFile->getSize(),'Wrong size!');
|
|
}
|
|
|
|
public function testGetInstancesByName()
|
|
{
|
|
$inputName='test_name';
|
|
$inputCount=3;
|
|
$_FILES[$inputName]=array(
|
|
'name'=>array(),
|
|
'type'=>array(),
|
|
'tmp_name'=>array(),
|
|
'error'=>array(),
|
|
'size'=>array(),
|
|
);
|
|
for($i=0;$i<$inputCount;$i++)
|
|
{
|
|
$_FILES[$inputName]['name'][$i]='test_file_'.$i.'.dat';
|
|
$_FILES[$inputName]['type'][$i]='mime/type'.$i;
|
|
$_FILES[$inputName]['tmp_name'][$i]='/tmp/file'.$i;
|
|
$_FILES[$inputName]['error'][$i]=UPLOAD_ERR_OK;
|
|
$_FILES[$inputName]['size'][$i]=500+$i*10;
|
|
}
|
|
|
|
$uploadedFiles=CUploadedFile::getInstancesByName($inputName);
|
|
$this->assertFalse(empty($uploadedFiles),'Unable to get instances by name!');
|
|
for($i=0;$i<$inputCount;$i++)
|
|
{
|
|
$this->assertEquals($_FILES[$inputName]['name'][$i],$uploadedFiles[$i]->getName(),'Wrong name!');
|
|
$this->assertEquals($_FILES[$inputName]['type'][$i],$uploadedFiles[$i]->getType(),'Wrong type!');
|
|
$this->assertEquals($_FILES[$inputName]['tmp_name'][$i],$uploadedFiles[$i]->getTempName(),'Wrong temp name!');
|
|
$this->assertEquals($_FILES[$inputName]['error'][$i],$uploadedFiles[$i]->getError(),'Wrong error!');
|
|
$this->assertEquals($_FILES[$inputName]['size'][$i],$uploadedFiles[$i]->getSize(),'Wrong size!');
|
|
}
|
|
}
|
|
|
|
public function testGetInstanceByNestedName()
|
|
{
|
|
$baseInputName='SomeModel';
|
|
$subInputName='test_name';
|
|
$_FILES[$baseInputName]=array(
|
|
'name'=>array(
|
|
$subInputName=>'test_file.dat'
|
|
),
|
|
'type'=>array(
|
|
$subInputName=>'somemime/type'
|
|
),
|
|
'tmp_name'=>array(
|
|
$subInputName=>'/tmp/test_file'
|
|
),
|
|
'error'=>array(
|
|
$subInputName=>UPLOAD_ERR_OK
|
|
),
|
|
'size'=>array(
|
|
$subInputName=>100
|
|
),
|
|
);
|
|
$uploadedFile=CUploadedFile::getInstanceByName("{$baseInputName}[{$subInputName}]");
|
|
$this->assertTrue(is_object($uploadedFile),'Unable to get uploaded file by nested name!');
|
|
$this->assertEquals($_FILES[$baseInputName]['name'][$subInputName],$uploadedFile->getName(),'Wrong name!');
|
|
$this->assertEquals($_FILES[$baseInputName]['type'][$subInputName],$uploadedFile->getType(),'Wrong type!');
|
|
$this->assertEquals($_FILES[$baseInputName]['tmp_name'][$subInputName],$uploadedFile->getTempName(),'Wrong temp name!');
|
|
$this->assertEquals($_FILES[$baseInputName]['error'][$subInputName],$uploadedFile->getError(),'Wrong error!');
|
|
$this->assertEquals($_FILES[$baseInputName]['size'][$subInputName],$uploadedFile->getSize(),'Wrong size!');
|
|
}
|
|
|
|
/**
|
|
* @depends testGetInstancesByName
|
|
*
|
|
* @see https://github.com/yiisoft/yii/issues/159
|
|
*/
|
|
public function testGetInstancesByNamePartOfOtherName()
|
|
{
|
|
$baseInputName='base_name';
|
|
$tailedInputName=$baseInputName.'_tail';
|
|
|
|
$_FILES[$baseInputName]=array(
|
|
'name'=>$baseInputName.'.dat',
|
|
'type'=>'somemime/'.$baseInputName,
|
|
'tmp_name'=>'/tmp/'.$baseInputName,
|
|
'error'=>UPLOAD_ERR_OK,
|
|
'size'=>100,
|
|
);
|
|
$_FILES[$tailedInputName]=array(
|
|
'name'=>$tailedInputName.'.dat',
|
|
'type'=>'somemime/'.$tailedInputName,
|
|
'tmp_name'=>'/tmp/'.$tailedInputName,
|
|
'error'=>UPLOAD_ERR_OK,
|
|
'size'=>100,
|
|
);
|
|
|
|
$uploadedFiles=CUploadedFile::getInstancesByName($baseInputName);
|
|
foreach($uploadedFiles as $uploadedFile)
|
|
$this->assertEquals($_FILES[$baseInputName]['name'],$uploadedFile->getName(),'Wrong file fetched!');
|
|
}
|
|
|
|
public function testGetExtensionName()
|
|
{
|
|
$inputName='test_name';
|
|
$_FILES[$inputName]=array(
|
|
'name'=>'test_file.dat',
|
|
'type'=>'somemime/type',
|
|
'tmp_name'=>'/tmp/test_file',
|
|
'error'=>UPLOAD_ERR_OK,
|
|
'size'=>100,
|
|
);
|
|
$uploadedFile=CUploadedFile::getInstanceByName($inputName);
|
|
$this->assertEquals("dat",$uploadedFile->getExtensionName(),'Wrong extension name!');
|
|
|
|
// reset and test a setup without file extension
|
|
CUploadedFile::reset();
|
|
$_FILES[$inputName]['name']='test_file';
|
|
$uploadedFile=CUploadedFile::getInstanceByName($inputName);
|
|
$this->assertEquals("",$uploadedFile->getExtensionName(),'Wrong extension name!');
|
|
}
|
|
}
|