aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/files/upload_test.php23
-rw-r--r--tests/upload/fileupload_test.php19
2 files changed, 42 insertions, 0 deletions
diff --git a/tests/files/upload_test.php b/tests/files/upload_test.php
index 4323f6cc92..057bb8a4f2 100644
--- a/tests/files/upload_test.php
+++ b/tests/files/upload_test.php
@@ -93,4 +93,27 @@ class phpbb_files_upload_test extends phpbb_test_case
$upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request, $this->phpbb_root_path);
$this->assertFalse($upload->is_valid('foobar'));
}
+
+ public function data_internal_error()
+ {
+ return array(
+ array(UPLOAD_ERR_INI_SIZE, 'PHP_SIZE_OVERRUN'),
+ array(UPLOAD_ERR_FORM_SIZE, 'WRONG_FILESIZE'),
+ array(UPLOAD_ERR_PARTIAL, 'PARTIAL_UPLOAD'),
+ array(UPLOAD_ERR_NO_FILE, 'NOT_UPLOADED'),
+ array(UPLOAD_ERR_NO_TMP_DIR, 'Temporary folder could not be found. Please check your PHP installation.'),
+ array(UPLOAD_ERR_CANT_WRITE, 'Can’t write to temporary folder.'),
+ array(UPLOAD_ERR_EXTENSION, 'A PHP extension has stopped the file upload.'),
+ array(9, false),
+ );
+ }
+
+ /**
+ * @dataProvider data_internal_error
+ */
+ public function test_assign_internal_error($error_code, $expected)
+ {
+ $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request, $this->phpbb_root_path);
+ $this->assertSame($expected, $upload->assign_internal_error($error_code));
+ }
}
diff --git a/tests/upload/fileupload_test.php b/tests/upload/fileupload_test.php
index 7a84b34473..ab42a4a153 100644
--- a/tests/upload/fileupload_test.php
+++ b/tests/upload/fileupload_test.php
@@ -119,6 +119,25 @@ class phpbb_fileupload_test extends phpbb_test_case
$this->assertEquals('DISALLOWED_EXTENSION', $file->error[0]);
}
+ public function test_common_checks_disallowed_content()
+ {
+ $upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request, $this->phpbb_root_path);
+ $upload->set_allowed_extensions(array('jpg'))
+ ->set_max_filesize(1000);
+ $file = new \phpbb\files\filespec($this->filesystem, $this->language, $this->phpbb_root_path);
+ $file->set_upload_ary(array(
+ 'size' => 50,
+ 'tmp_name' => dirname(__FILE__) . '/fixture/disallowed',
+ 'name' => 'disallowed.jpg',
+ 'type' => 'image/jpg'
+ ))
+ ->set_upload_namespace($upload);
+ file_put_contents(dirname(__FILE__) . '/fixture/disallowed', '<body>' . file_get_contents(dirname(__FILE__) . '/fixture/jpg'));
+ $upload->common_checks($file);
+ $this->assertEquals('DISALLOWED_CONTENT', $file->error[0]);
+ unlink(dirname(__FILE__) . '/fixture/disallowed');
+ }
+
public function test_common_checks_invalid_filename()
{
$upload = new \phpbb\files\upload($this->filesystem, $this->factory, $this->language, $this->request, $this->phpbb_root_path);