diff options
| author | Fyorl <gaelreth@gmail.com> | 2012-07-08 14:39:18 +0100 |
|---|---|---|
| committer | Fyorl <gaelreth@gmail.com> | 2012-07-09 14:08:20 +0100 |
| commit | 580cec619b399f710aedc1d3c2dd92c2287ebaff (patch) | |
| tree | 1061387bc329050dff1d56e313d31196c0a830b2 /tests/uploads | |
| parent | d89af53f6311d9f4cec60d136cf017df9e1a36cd (diff) | |
| download | forums-580cec619b399f710aedc1d3c2dd92c2287ebaff.tar forums-580cec619b399f710aedc1d3c2dd92c2287ebaff.tar.gz forums-580cec619b399f710aedc1d3c2dd92c2287ebaff.tar.bz2 forums-580cec619b399f710aedc1d3c2dd92c2287ebaff.tar.xz forums-580cec619b399f710aedc1d3c2dd92c2287ebaff.zip | |
[ticket/10941] Added subdirectory for file operations
Also removed common.php as it was unnecessary.
PHPBB3-10941
Diffstat (limited to 'tests/uploads')
| -rw-r--r-- | tests/uploads/common.php | 0 | ||||
| -rw-r--r-- | tests/uploads/filespec_test.php | 286 | ||||
| -rw-r--r-- | tests/uploads/fileupload_test.php | 116 | ||||
| -rw-r--r-- | tests/uploads/fixture/gif | bin | 35 -> 0 bytes | |||
| -rw-r--r-- | tests/uploads/fixture/jpg | bin | 519 -> 0 bytes | |||
| -rw-r--r-- | tests/uploads/fixture/png | bin | 69 -> 0 bytes | |||
| -rw-r--r-- | tests/uploads/fixture/tif | bin | 256 -> 0 bytes | |||
| -rw-r--r-- | tests/uploads/fixture/txt | 1 |
8 files changed, 0 insertions, 403 deletions
diff --git a/tests/uploads/common.php b/tests/uploads/common.php deleted file mode 100644 index e69de29bb2..0000000000 --- a/tests/uploads/common.php +++ /dev/null diff --git a/tests/uploads/filespec_test.php b/tests/uploads/filespec_test.php deleted file mode 100644 index c3e3ddf8f2..0000000000 --- a/tests/uploads/filespec_test.php +++ /dev/null @@ -1,286 +0,0 @@ -<?php -/** - * - * @package testing - * @copyright (c) 2012 phpBB Group - * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 - * - */ - -require_once __DIR__ . '/../../phpBB/includes/functions.php'; -require_once __DIR__ . '/../../phpBB/includes/utf/utf_tools.php'; -require_once __DIR__ . '/../../phpBB/includes/functions_upload.php'; -require_once __DIR__ . '/../mock/fileupload.php'; -require_once __DIR__ . '/../mock/request.php'; - -class phpbb_filespec_test extends phpbb_test_case -{ - const TEST_COUNT = 100; - const PREFIX = 'phpbb_'; - const MAX_STR_LEN = 50; - const UPLOAD_MAX_FILESIZE = 1000; - - private $config; - public $path; - - protected function setUp() - { - // Global $config required by unique_id - // Global $user required by filespec::additional_checks and - // filespec::move_file - global $config, $user; - - if (!is_array($config)) - { - $config = array(); - } - - $config['rand_seed'] = ''; - $config['rand_seed_last_update'] = time() + 600; - // This config value is normally pulled from the database which is set - // to this value at install time. - // See: phpBB/install/schemas/schema_data.sql - $config['mime_triggers'] = 'body|head|html|img|plaintext|a href|pre|script|table|title'; - - $user = new phpbb_mock_user(); - $user->lang = new phpbb_mock_lang(); - - $this->config = &$config; - $this->path = __DIR__ . '/fixture/'; - - // Create copies of the files for use in testing move_file - $iterator = new DirectoryIterator($this->path); - foreach ($iterator as $fileinfo) - { - if ($fileinfo->isDot()) - { - continue; - } - - copy($fileinfo->getPathname(), $this->path . $fileinfo->getFilename() . '_copy'); - if ($fileinfo->getFilename() === 'txt') - { - copy($fileinfo->getPathname(), $this->path . $fileinfo->getFilename() . '_copy_2'); - } - } - } - - private function get_filespec($override = array()) - { - // Initialise a blank filespec object for use with trivial methods - $upload_ary = array( - 'name' => '', - 'type' => '', - 'size' => '', - 'tmp_name' => '', - 'error' => '', - ); - - return new filespec(array_merge($upload_ary, $override), null); - } - - protected function tearDown() - { - global $user; - $this->config = array(); - $user = null; - - $files = array( - 'gif_copy', - 'jpg_copy', - 'png_copy', - 'txt_copy', - 'txt_copy_2', - 'tif_copy', - 'gif_moved', - 'jpg_moved', - 'png_moved', - 'txt_as_img', - 'txt_moved', - ); - - foreach ($files as $file) - { - @unlink($this->path . $file); - } - } - - public function additional_checks_variables() - { - // False here just indicates the file is too large and fails the - // filespec::additional_checks method because of it. All other code - // paths in that method are covered elsewhere. - return array( - array('gif', true), - array('jpg', false), - array('png', true), - array('tif', false), - array('txt', true), - ); - } - - /** - * @dataProvider additional_checks_variables - */ - public function test_additional_checks($filename, $expected) - { - $upload = new phpbb_mock_fileupload(); - $filespec = $this->get_filespec(array('tmp_name', $this->path . $filename)); - $filespec->upload = $upload; - $filespec->file_moved = true; - $filespec->filesize = $filespec->get_filesize($this->path . $filename); - - $this->assertEquals($expected, $filespec->additional_checks()); - } - - public function check_content_variables() - { - // False here indicates that a file is non-binary and contains - // disallowed content that makes IE report the mimetype incorrectly. - return array( - array('gif', true), - array('jpg', true), - array('png', true), - array('tif', true), - array('txt', false), - ); - } - - /** - * @dataProvider check_content_variables - */ - public function test_check_content($filename, $expected) - { - $disallowed_content = explode('|', $this->config['mime_triggers']); - $filespec = $this->get_filespec(array('tmp_name' => $this->path . $filename)); - $this->assertEquals($expected, $filespec->check_content($disallowed_content)); - } - - public function clean_filename_variables() - { - $chunks = str_split('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\'\\" /:*?<>|[];(){},#+=-_`', 8); - return array( - array($chunks[0] . $chunks[7]), - array($chunks[1] . $chunks[8]), - array($chunks[2] . $chunks[9]), - array($chunks[3] . $chunks[4]), - array($chunks[5] . $chunks[6]), - ); - } - - /** - * @dataProvider clean_filename_variables - */ - public function test_clean_filename_real($filename) - { - $bad_chars = array("'", "\\", ' ', '/', ':', '*', '?', '"', '<', '>', '|'); - $filespec = $this->get_filespec(array('name' => $filename)); - $filespec->clean_filename('real', self::PREFIX); - $name = $filespec->realname; - - $this->assertEquals(0, preg_match('/%(\w{2})/', $name)); - foreach ($bad_chars as $char) - { - $this->assertFalse(strpos($name, $char)); - } - } - - public function test_clean_filename_unique() - { - $filenames = array(); - for ($tests = 0; $tests < self::TEST_COUNT; $tests++) - { - $filespec = $this->get_filespec(); - $filespec->clean_filename('unique', self::PREFIX); - $name = $filespec->realname; - - $this->assertEquals(strlen($name), 32 + strlen(self::PREFIX)); - $this->assertRegExp('#^[A-Za-z0-9]+$#', substr($name, strlen(self::PREFIX))); - $this->assertFalse(isset($filenames[$name])); - $filenames[$name] = true; - } - } - - public function get_extension_variables() - { - return array( - array('file.png', 'png'), - array('file.phpbb.gif', 'gif'), - array('file..', ''), - array('.file..jpg.webp', 'webp'), - ); - } - - /** - * @dataProvider get_extension_variables - */ - public function test_get_extension($filename, $expected) - { - $filespec = $this->get_filespec(); - $this->assertEquals($expected, $filespec->get_extension($filename)); - } - - public function is_image_variables() - { - return array( - array('gif', 'image/gif', true), - array('jpg', 'image/jpg', true), - array('png', 'image/png', true), - array('tif', 'image/tif', true), - array('txt', 'text/plain', false), - ); - } - - /** - * @dataProvider is_image_variables - */ - public function test_is_image($filename, $mimetype, $expected) - { - $filespec = $this->get_filespec(array('tmp_name' => $this->path . $filename, 'type' => $mimetype)); - $this->assertEquals($expected, $filespec->is_image()); - } - - public function move_file_variables() - { - return array( - array('gif_copy', 'gif_moved', 'image/gif', 'gif', false, true), - array('non_existant', 'still_non_existant', 'text/plain', 'txt', 'GENERAL_UPLOAD_ERROR', false), - array('txt_copy', 'txt_as_img', 'image/jpg', 'txt', false, true), - array('txt_copy_2', 'txt_moved', 'text/plain', 'txt', false, true), - array('jpg_copy', 'jpg_moved', 'image/png', 'jpg', false, true), - array('png_copy', 'png_moved', 'image/png', 'jpg', 'IMAGE_FILETYPE_MISMATCH', true), - ); - } - - /** - * @dataProvider move_file_variables - */ - public function test_move_file($tmp_name, $realname, $mime_type, $extension, $error, $expected) - { - // Global $phpbb_root_path and $phpEx are required by phpbb_chmod - global $phpbb_root_path, $phpEx; - $phpbb_root_path = ''; - $phpEx = 'php'; - - $upload = new phpbb_mock_fileupload(); - $upload->max_filesize = self::UPLOAD_MAX_FILESIZE; - - $filespec = $this->get_filespec(array( - 'tmp_name' => $this->path . $tmp_name, - 'name' => $realname, - 'type' => $mime_type, - )); - $filespec->extension = $extension; - $filespec->upload = $upload; - $filespec->local = true; - - $this->assertEquals($expected, $filespec->move_file($this->path)); - $this->assertEquals($filespec->file_moved, file_exists($this->path . $realname)); - if ($error) - { - $this->assertEquals($error, $filespec->error[0]); - } - - $phpEx = ''; - } -} diff --git a/tests/uploads/fileupload_test.php b/tests/uploads/fileupload_test.php deleted file mode 100644 index 2b3c17b8e0..0000000000 --- a/tests/uploads/fileupload_test.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php -/** - * - * @package testing - * @copyright (c) 2012 phpBB Group - * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 - * - */ - -require_once __DIR__ . '/../../phpBB/includes/functions.php'; -require_once __DIR__ . '/../../phpBB/includes/utf/utf_tools.php'; -require_once __DIR__ . '/../../phpBB/includes/functions_upload.php'; -require_once __DIR__ . '/../mock/filespec.php'; - -class phpbb_fileupload_test extends phpbb_test_case -{ - private $path; - - protected function setUp() - { - // Global $config required by unique_id - // Global $user required by several functions dealing with translations - global $config, $user; - - if (!is_array($config)) - { - $config = array(); - } - - $config['rand_seed'] = ''; - $config['rand_seed_last_update'] = time() + 600; - - $user = new phpbb_mock_user(); - $user->lang = new phpbb_mock_lang(); - $this->path = __DIR__ . '/fixture/'; - } - - private function gen_valid_filespec() - { - $filespec = new phpbb_mock_filespec(); - $filespec->filesize = 1; - $filespec->extension = 'jpg'; - $filespec->realname = 'valid'; - $filespec->width = 2; - $filespec->height = 2; - - return $filespec; - } - - protected function tearDown() - { - // Clear globals - global $config, $user; - $config = array(); - $user = null; - } - - public function test_common_checks_invalid_extension() - { - $upload = new fileupload('', array('png'), 100); - $file = $this->gen_valid_filespec(); - $upload->common_checks($file); - $this->assertEquals('DISALLOWED_EXTENSION', $file->error[0]); - } - - public function test_common_checks_invalid_filename() - { - $upload = new fileupload('', array('jpg'), 100); - $file = $this->gen_valid_filespec(); - $file->realname = 'invalid?'; - $upload->common_checks($file); - $this->assertEquals('INVALID_FILENAME', $file->error[0]); - } - - public function test_common_checks_too_large() - { - $upload = new fileupload('', array('jpg'), 100); - $file = $this->gen_valid_filespec(); - $file->filesize = 1000; - $upload->common_checks($file); - $this->assertEquals('WRONG_FILESIZE', $file->error[0]); - } - - public function test_common_checks_valid_file() - { - $upload = new fileupload('', array('jpg'), 1000); - $file = $this->gen_valid_filespec(); - $upload->common_checks($file); - $this->assertEquals(0, sizeof($file->error)); - } - - public function test_local_upload() - { - $upload = new fileupload('', array('jpg'), 1000); - - copy($this->path . 'jpg', $this->path . 'jpg.jpg'); - $file = $upload->local_upload($this->path . 'jpg.jpg'); - $this->assertEquals(0, sizeof($file->error)); - unlink($this->path . 'jpg.jpg'); - } - - public function test_valid_dimensions() - { - $upload = new fileupload('', false, false, 1, 1, 100, 100); - - $file1 = $this->gen_valid_filespec(); - $file2 = $this->gen_valid_filespec(); - $file2->height = 101; - $file3 = $this->gen_valid_filespec(); - $file3->width = 0; - - $this->assertTrue($upload->valid_dimensions($file1)); - $this->assertFalse($upload->valid_dimensions($file2)); - $this->assertFalse($upload->valid_dimensions($file3)); - } -} diff --git a/tests/uploads/fixture/gif b/tests/uploads/fixture/gif Binary files differdeleted file mode 100644 index b636f4b8df..0000000000 --- a/tests/uploads/fixture/gif +++ /dev/null diff --git a/tests/uploads/fixture/jpg b/tests/uploads/fixture/jpg Binary files differdeleted file mode 100644 index 3cd5038e38..0000000000 --- a/tests/uploads/fixture/jpg +++ /dev/null diff --git a/tests/uploads/fixture/png b/tests/uploads/fixture/png Binary files differdeleted file mode 100644 index 5514ad40e9..0000000000 --- a/tests/uploads/fixture/png +++ /dev/null diff --git a/tests/uploads/fixture/tif b/tests/uploads/fixture/tif Binary files differdeleted file mode 100644 index 248b50f9cb..0000000000 --- a/tests/uploads/fixture/tif +++ /dev/null diff --git a/tests/uploads/fixture/txt b/tests/uploads/fixture/txt deleted file mode 100644 index d3c40d2ea7..0000000000 --- a/tests/uploads/fixture/txt +++ /dev/null @@ -1 +0,0 @@ -<HTML>mime trigger</HTML> |
