Hi,

I don't really understand what you mean that I should so.
I understand that the 'file' parameter is not empty, because I am trying
to upload a file. But it shouldn't be a path either IMO, I just used
this test to show the value of the 'file' parameter, which is not a
file, but a path.
The real problem is the second test, where the sfFileValidator complains
about the missing file.

Georg

Am 11.12.2009 13:36, schrieb Alexandru-Emil Lupu:
> Check your
> IsParameter('file','')
> The test expects no file but you send one... so the file parameter is
> not empty.
> 
> sent via htc magic
> 
>> On Dec 11, 2009 2:01 PM, "Georg Gell" <geor...@have2.com
>> <mailto:geor...@have2.com>> wrote:
>>
>> Hello,
>>
>> I have an action that accepts file uploads from a desktop program.
>> I use a form for validation (see below) and if the form is valid, I
>> process the uploaded files(see action below). This works as expected.
>>
>> But the functional tests (see below) do not upload any file (result see
>> below, result 37 shows, that no file is uploaded, but only the path, and
>> 39 shows that the sfFileValidator complains that the file is required).
>>
>> I checked the docs, but I only found this
>> (http://www.symfony-project.org/jobeet/1_4/Doctrine/en/11): "The browser
>> also simulates file uploads if you pass the absolute path to the file to
>> upload." which either I don't understand or doesn't work.
>>
>> Has anyone done file uploads in a functional test, and how?
>>
>> Thanks
>> Georg
>>
>> my functional test:
>> __________________
>> $in2 = array('path' => '/path',
>>  'md5' => 'e1aab77d216d8ad97ff143823a75038e',
>>  'ci' => '0123456789abcdef0123456789abcdef',
>>  'file' =>
>> '/var/www/shared/appxxx/test/fixtures/testdata/images/IMG_0283.JPG');
>>
>> $browser = new sfTestFunctional(new sfBrowser());
>> $browser->
>> //...
>> info('post remote/upload - returns OK')->
>>  post('http://client.virtual/remote/upload', $in2)->
>>  with('request')->begin()->
>>    isParameter('module', 'remote')->
>>    isParameter('action', 'upload')->
>>    isParameter('ci', '0123456789abcdef0123456789abcdef')->
>>    isParameter('md5', 'e1aab77d216d8ad97ff143823a75038e')->
>>    isParameter('path', '/path')->
>>    isParameter('file', '')->
>>  end()->
>>  with('response')->begin()->
>>    isStatusCode(200)->
>>    matches('#OK#')->
>>  end();
>> __________________
>>
>> the validation form:
>> __________________
>> class UploadForm extends BaseForm {
>>
>> public function configure() {
>>  $this->setValidators(array(
>>    'ci' => new sfValidatorString(array('max_length' => 32, 'min_length'
>> => 32)),
>>    'path' => new sfValidatorDoctrineChoice(array('model' => 'Path',
>> 'column' => 'path')),
>>    'md5' => new sfValidatorString(array('max_length' => 32,
>> 'min_length' => 32)),
>>    'file' => new sfValidatorFile(array('max_size' => 200000,
>> 'mime_types' => 'web_images')),
>>      'module' => new sfValidatorPass(),
>>      'action' => new sfValidatorPass(),
>>     ));
>>   $this->disableLocalCSRFProtection();
>>  }
>> }
>> ______________________
>>  and the action looks like this:
>> ______________________
>> public function executeUpload(sfWebRequest $request) {
>>  if ($request->isMethod('post')) {
>>  $this->form = new UploadForm();
>>  $this->form->bind($request->getParameterHolder()->getAll(),
>> $request->getFiles());
>>  if ($this->form->isValid()) {
>>    // to something
>>    return $this->renderText('OK');
>>  } else {
>>    $result = 'ERROR: ';
>>    foreach($this->form->getErrorSchema()->getErrors() as $k => $error) {
>>      $result .= "\n$k: " . $error->getMessage();
>>    }
>>    return $this->renderText($result);
>>  }
>> }
>> return $this->renderText('ERROR Invalid method');
>> }
>> ______________________
>> and the test result:
>> ______________________
>> not ok 37 - request parameter file is ""
>> #     Failed test
>> (./lib/vendor/symfony/lib/test/sfTesterRequest.class.php at line 48)
>> #            got:
>> '/var/www/shared/appxxx/test/fixtures/testdata/images/IMG_0283.JPG'
>> #       expected: ''
>> ok 38 - status code is 200
>> not ok 39 - response content matches regex #OK#
>> #     Failed test
>> (./lib/vendor/symfony/lib/test/sfTesterResponse.class.php at line 383)
>> #                     'ERROR:
>> file: Required.'
>> #       doesn't match '#OK#'
>>
>> --
>>
>> You received this message because you are subscribed to the Google
>> Groups "symfony users" group.
>> To post to this group, send email to symfony-users@googlegroups.com
>> <mailto:symfony-users@googlegroups.com>.
>> To unsubscribe from this group, send email to
>> symfony-users+unsubscr...@googlegroups.com
>> <mailto:symfony-users%2bunsubscr...@googlegroups.com>.
>> For more options, visit this group at
>> http://groups.google.com/group/symfony-users?hl=en.
>>
>>
> --
> 
> You received this message because you are subscribed to the Google
> Groups "symfony users" group.
> To post to this group, send email to symfony-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> symfony-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/symfony-users?hl=en.

--

You received this message because you are subscribed to the Google Groups 
"symfony users" group.
To post to this group, send email to symfony-us...@googlegroups.com.
To unsubscribe from this group, send email to 
symfony-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/symfony-users?hl=en.


Reply via email to