Example #1
0
 public function testFileField()
 {
     $p_small = array('size' => 123, 'data' => (object) array('dummy' => true), 'name' => 'uploadfield', 'filename' => 'small_file.txt', 'of_type' => 'FILE', 'type' => 'text/plain');
     $p_big = array('size' => 123123123, 'data' => (object) array('dummy' => true), 'filename' => 'big_file.mpg', 'name' => 'uploadfile', 'of_type' => 'FILE', 'type' => 'video/mp4');
     $no_size = $p_small;
     unset($no_size['size']);
     $no_filename = $p_small;
     unset($no_filename['filename']);
     $filename_empty = $p_small;
     $filename_empty['filename'] = '';
     $size_empty = $p_small;
     $size_empty['size'] = 0;
     $field = new field\File();
     $data = $field->clean($p_small);
     $this->assertEquals($p_small, $data);
     $data = $field->clean($p_big);
     $this->assertEquals($p_big, $data);
     $this->assertEquals(null, $field->clean(''));
     $bads = array($no_size, $no_filename, $filename_empty, $size_empty);
     foreach ($bads as $bad) {
         try {
             $bad = $field->clean($bad);
         } catch (Invalid $e) {
             continue;
         }
         $this->fail(sprintf('This value should be bad: %s.', $bad));
     }
     $field = new field\File(array('max_length' => 12));
     $catched = false;
     try {
         $bad = $field->clean($p_small);
     } catch (Invalid $e) {
         $catched = true;
     }
     if (!$catched) {
         $this->fail('The name is too long.');
     }
 }