From b65f08dd95de07405ed7f19fd980ca7d09925406 Mon Sep 17 00:00:00 2001 From: Fyorl Date: Sun, 8 Jul 2012 01:22:26 +0100 Subject: [PATCH] [ticket/10941] Rearranged tests into their own classes or methods PHPBB3-10941 --- tests/functional/fileupload_test.php | 97 --------------------- tests/functional/fileupload_test_form.php | 62 +++++++++++++ tests/functional/fileupload_test_remote.php | 71 +++++++++++++++ tests/uploads/fileupload_test.php | 35 ++++---- 4 files changed, 153 insertions(+), 112 deletions(-) delete mode 100644 tests/functional/fileupload_test.php create mode 100644 tests/functional/fileupload_test_form.php create mode 100644 tests/functional/fileupload_test_remote.php diff --git a/tests/functional/fileupload_test.php b/tests/functional/fileupload_test.php deleted file mode 100644 index 2abf81c457..0000000000 --- a/tests/functional/fileupload_test.php +++ /dev/null @@ -1,97 +0,0 @@ -add_lang('posting'); - $this->login(); - - // Test 1: Invalid extension - $crawler = $this->request('GET', 'posting.php?mode=reply&f=2&t=1&sid=' . $this->sid); - $form = $crawler->selectButton('add_file')->form(); - $form['fileupload']->upload($path . 'illegal-extension.bif'); - $crawler = $this->client->submit($form); - $this->assertEquals('The extension bif is not allowed.', $crawler->filter('p.error')->text()); - - // Test 2: Empty file - $crawler = $this->request('GET', 'posting.php?mode=reply&f=2&t=1&sid=' . $this->sid); - $form = $crawler->selectButton('add_file')->form(); - $form['fileupload']->upload($path . 'empty.png'); - $crawler = $this->client->submit($form); - $this->assertEquals('The image file you tried to attach is invalid.', $crawler->filter('div#message p')->text()); - - // Test 3: File too large - // Cannot be tested by an admin account which this functional framework - // provides - /*$crawler = $this->request('GET', 'posting.php?mode=reply&f=2&t=1&sid=' . $this->sid); - $form = $crawler->selectButton('add_file')->form(); - $form['fileupload']->upload($path . 'too-large.png'); - $crawler = $this->client->submit($form); - $this->assertEquals(1, $crawler->filter('div#message')->count());*/ - - // Test 4: Valid file - $crawler = $this->request('GET', 'posting.php?mode=reply&f=2&t=1&sid=' . $this->sid); - $form = $crawler->selectButton('add_file')->form(); - $form['fileupload']->upload($path . 'valid.jpg'); - $crawler = $this->client->submit($form); - $this->assertEquals(0, $crawler->filter('p.error')->count()); - $this->assertContains($this->lang('POSTED_ATTACHMENTS'), $crawler->filter('#postform h3')->eq(1)->text()); - } - - public function test_remote_upload() - { - // Only doing this within the functional framework because we need a - // URL - - // Global $config required by unique_id - // Global $user required by fileupload::remote_upload - 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(); - - // Test 1: Invalid extension - $upload = new fileupload('', array('jpg'), 100); - $file = $upload->remote_upload('http://example.com/image.gif'); - $this->assertEquals('URL_INVALID', $file->error[0]); - - // Test 2: Non-existant file - $upload = new fileupload('', array('jpg'), 100); - $file = $upload->remote_upload('http://example.com/image.jpg'); - $this->assertEquals('EMPTY_REMOTE_DATA', $file->error[0]); - - // Test 3: File too large - $upload = new fileupload('', array('gif'), 100); - $file = $upload->remote_upload($this->root_url . 'styles/prosilver/theme/images/forum_read.gif'); - $this->assertEquals('WRONG_FILESIZE', $file->error[0]); - - // Test 4: Successful upload - $upload = new fileupload('', array('gif'), 1000); - $file = $upload->remote_upload($this->root_url . 'styles/prosilver/theme/images/forum_read.gif'); - $this->assertEquals(0, sizeof($file->error)); - $this->assertTrue(file_exists($file->filename)); - - $config = array(); - $user = null; - } -} diff --git a/tests/functional/fileupload_test_form.php b/tests/functional/fileupload_test_form.php new file mode 100644 index 0000000000..48fa75ca4b --- /dev/null +++ b/tests/functional/fileupload_test_form.php @@ -0,0 +1,62 @@ +path = __DIR__ . '/fixtures/files/'; + $this->add_lang('posting'); + $this->login(); + } + + public function test_empty_file() + { + $crawler = $this->request('GET', 'posting.php?mode=reply&f=2&t=1&sid=' . $this->sid); + $form = $crawler->selectButton('add_file')->form(); + $form['fileupload']->upload($this->path . 'empty.png'); + $crawler = $this->client->submit($form); + $this->assertEquals('The image file you tried to attach is invalid.', $crawler->filter('div#message p')->text()); + } + + public function test_invalid_extension() + { + $crawler = $this->request('GET', 'posting.php?mode=reply&f=2&t=1&sid=' . $this->sid); + $form = $crawler->selectButton('add_file')->form(); + $form['fileupload']->upload($this->path . 'illegal-extension.bif'); + $crawler = $this->client->submit($form); + $this->assertEquals('The extension bif is not allowed.', $crawler->filter('p.error')->text()); + } + + public function test_too_large() + { + // Cannot be tested by an admin account which this functional framework + // provides + /*$crawler = $this->request('GET', 'posting.php?mode=reply&f=2&t=1&sid=' . $this->sid); + $form = $crawler->selectButton('add_file')->form(); + $form['fileupload']->upload($path . 'too-large.png'); + $crawler = $this->client->submit($form); + $this->assertEquals(1, $crawler->filter('div#message')->count());*/ + } + + public function test_valid_file() + { + $crawler = $this->request('GET', 'posting.php?mode=reply&f=2&t=1&sid=' . $this->sid); + $form = $crawler->selectButton('add_file')->form(); + $form['fileupload']->upload($this->path . 'valid.jpg'); + $crawler = $this->client->submit($form); + $this->assertEquals(0, $crawler->filter('p.error')->count()); + $this->assertContains($this->lang('POSTED_ATTACHMENTS'), $crawler->filter('#postform h3')->eq(1)->text()); + } +} diff --git a/tests/functional/fileupload_test_remote.php b/tests/functional/fileupload_test_remote.php new file mode 100644 index 0000000000..ac55a078d4 --- /dev/null +++ b/tests/functional/fileupload_test_remote.php @@ -0,0 +1,71 @@ +lang = new phpbb_mock_lang(); + } + + protected function tearDown() + { + global $config, $user; + $user = null; + $config = array(); + } + + public function test_invalid_extension() + { + $upload = new fileupload('', array('jpg'), 100); + $file = $upload->remote_upload('http://example.com/image.gif'); + $this->assertEquals('URL_INVALID', $file->error[0]); + } + + public function test_non_existant() + { + $upload = new fileupload('', array('jpg'), 100); + $file = $upload->remote_upload('http://example.com/image.jpg'); + $this->assertEquals('EMPTY_REMOTE_DATA', $file->error[0]); + } + + public function test_successful_upload() + { + $upload = new fileupload('', array('gif'), 1000); + $file = $upload->remote_upload($this->root_url . 'styles/prosilver/theme/images/forum_read.gif'); + $this->assertEquals(0, sizeof($file->error)); + $this->assertTrue(file_exists($file->filename)); + } + + public function test_too_large() + { + $upload = new fileupload('', array('gif'), 100); + $file = $upload->remote_upload($this->root_url . 'styles/prosilver/theme/images/forum_read.gif'); + $this->assertEquals('WRONG_FILESIZE', $file->error[0]); + } +} diff --git a/tests/uploads/fileupload_test.php b/tests/uploads/fileupload_test.php index d5cd3d891b..2b3c17b8e0 100644 --- a/tests/uploads/fileupload_test.php +++ b/tests/uploads/fileupload_test.php @@ -55,33 +55,38 @@ class phpbb_fileupload_test extends phpbb_test_case $user = null; } - public function test_common_checks() + public function test_common_checks_invalid_extension() { - // Test 1: Valid file - $upload = new fileupload('', array('jpg'), 1000); + $upload = new fileupload('', array('png'), 100); $file = $this->gen_valid_filespec(); $upload->common_checks($file); - $this->assertEquals(0, sizeof($file->error)); + $this->assertEquals('DISALLOWED_EXTENSION', $file->error[0]); + } - // Test 2: File 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]); - - // Test 3: Invalid filename + 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]); + } - // Test 4: Invalid extension - $upload = new fileupload('', array('png'), 100); + 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('DISALLOWED_EXTENSION', $file->error[0]); + $this->assertEquals(0, sizeof($file->error)); } public function test_local_upload()