Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

ENHANCEMENT Validation for uploaded files (from r113420)

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@114534 467b73ca-7a2a-4603-9d3b-597d59a354a9
  • Loading branch information...
commit 1a3897ab1a51c9ab8d84774a940deb5fbbf5c135 1 parent c24ed58
@sminnee sminnee authored
Showing with 80 additions and 0 deletions.
  1. +80 −0 tests/forms/FileFieldTest.php
View
80 tests/forms/FileFieldTest.php
@@ -0,0 +1,80 @@
+<?php
+/**
+ * @package sapphire
+ * @subpackage tests
+ */
+class FileFieldTest extends FunctionalTest {
+
+ /**
+ * Test a valid upload of a required file in a form. Error is set to 0, as the upload went well
+ */
+ public function testUploadRequiredFile() {
+ $form = new Form(
+ new Controller(),
+ 'Form',
+ new FieldSet(
+ $fileField = new FileField('cv', 'Upload your CV')
+ ),
+ new FieldSet()
+ );
+ $fileFieldValue = array(
+ 'name' => 'aCV.txt',
+ 'type' => 'application/octet-stream',
+ 'tmp_name' => '/private/var/tmp/phpzTQbqP',
+ 'error' => 0,
+ 'size' => 3471
+ );
+ $fileField->setValue($fileFieldValue);
+
+ $this->assertTrue(
+ $form->validate()
+ );
+ }
+
+ /**
+ * Test different scenarii for a failed upload : an error occured, no files where provided
+ */
+ public function testUploadMissingRequiredFile() {
+ $form = new Form(
+ new Controller(),
+ 'Form',
+ new FieldSet(
+ $fileField = new FileField('cv', 'Upload your CV')
+ ),
+ new FieldSet(),
+ new RequiredFields('cv')
+ );
+ // All fields are filled but for some reason an error occured when uploading the file => fails
+ $fileFieldValue = array(
+ 'name' => 'aCV.txt',
+ 'type' => 'application/octet-stream',
+ 'tmp_name' => '/private/var/tmp/phpzTQbqP',
+ 'error' => 1,
+ 'size' => 3471
+ );
+ $fileField->setValue($fileFieldValue);
+
+ $this->assertFalse(
+ $form->validate(),
+ 'An error occured when uploading a file, but the validator returned true'
+ );
+
+ // We pass an empty set of parameters for the uploaded file => fails
+ $fileFieldValue = array();
+ $fileField->setValue($fileFieldValue);
+
+ $this->assertFalse(
+ $form->validate(),
+ 'An empty array was passed as parameter for an uploaded file, but the validator returned true'
+ );
+
+ // We pass an null value for the uploaded file => fails
+ $fileFieldValue = null;
+ $fileField->setValue($fileFieldValue);
+
+ $this->assertFalse(
+ $form->validate(),
+ 'A null value was passed as parameter for an uploaded file, but the validator returned true'
+ );
+ }
+}
Please sign in to comment.
Something went wrong with that request. Please try again.