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.