Permalink
Browse files

MINOR Added tests for Upload_Validator/UploadTest_Validator for allow…

…ed extensions validation (from r100990)

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@111561 467b73ca-7a2a-4603-9d3b-597d59a354a9
  • Loading branch information...
1 parent cb435df commit 7f147f9fab6152b71c6f1522061cc2d0ee797649 @sminnee sminnee committed Oct 4, 2010
Showing with 63 additions and 4 deletions.
  1. +63 −4 tests/filesystem/UploadTest.php
@@ -36,7 +36,7 @@ function testUpload() {
'File upload to standard directory in /assets'
);
$this->assertTrue(
- (strpos($file1->getFullPath(),Director::baseFolder() . '/assets/' . Upload::$uploads_folder) !== false),
+ (strpos($file1->getFullPath(), Director::baseFolder() . '/assets/' . Upload::$uploads_folder) !== false),
'File upload to standard directory in /assets'
);
$file1->delete();
@@ -51,7 +51,7 @@ function testUpload() {
'File upload to custom directory in /assets'
);
$this->assertTrue(
- (strpos($file2->getFullPath(),Director::baseFolder() . '/assets/' . $customFolder) !== false),
+ (strpos($file2->getFullPath(), Director::baseFolder() . '/assets/' . $customFolder) !== false),
'File upload to custom directory in /assets'
);
$file2->delete();
@@ -63,8 +63,67 @@ function testAllowedFilesize() {
// @todo
}
- function testAllowedExtensions() {
- // @todo
+ function testUploadDoesNotAllowUnknownExtension() {
+ // create tmp file
+ $tmpFileName = 'UploadTest_testUpload.php';
+ $tmpFilePath = TEMP_FOLDER . '/' . $tmpFileName;
+ $tmpFileContent = '';
+ for($i=0; $i<10000; $i++) $tmpFileContent .= '0';
+ file_put_contents($tmpFilePath, $tmpFileContent);
+
+ // emulates the $_FILES array
+ $tmpFile = array(
+ 'name' => $tmpFileName,
+ 'type' => 'text/plaintext',
+ 'size' => filesize($tmpFilePath),
+ 'tmp_name' => $tmpFilePath,
+ 'extension' => 'txt',
+ 'error' => UPLOAD_ERR_OK,
+ );
+
+ $v = new UploadTest_Validator();
+ $v->setAllowedExtensions(array('txt'));
+
+ // test upload into default folder
+ $u = new Upload();
+ $u->setValidator($v);
+ $result = $u->load($tmpFile);
+
+ $this->assertFalse($result, 'Load failed because extension was not accepted');
+ $this->assertEquals(1, count($u->getErrors()), 'There is a single error of the file extension');
+ }
+
+ function testUploadAcceptsAllowedExtension() {
+ // create tmp file
+ $tmpFileName = 'UploadTest_testUpload.txt';
+ $tmpFilePath = TEMP_FOLDER . '/' . $tmpFileName;
+ $tmpFileContent = '';
+ for($i=0; $i<10000; $i++) $tmpFileContent .= '0';
+ file_put_contents($tmpFilePath, $tmpFileContent);
+
+ // emulates the $_FILES array
+ $tmpFile = array(
+ 'name' => $tmpFileName,
+ 'type' => 'text/plaintext',
+ 'size' => filesize($tmpFilePath),
+ 'tmp_name' => $tmpFilePath,
+ 'extension' => 'txt',
+ 'error' => UPLOAD_ERR_OK,
+ );
+
+ $v = new UploadTest_Validator();
+ $v->setAllowedExtensions(array('txt'));
+
+ // test upload into default folder
+ $u = new Upload();
+ $u->setValidator($v);
+ $u->load($tmpFile);
+ $file = $u->getFile();
+ $this->assertTrue(
+ file_exists($file->getFullPath()),
+ 'File upload to custom directory in /assets'
+ );
+ $file->delete();
}
}

0 comments on commit 7f147f9

Please sign in to comment.