diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-12-06 00:27:40 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-12-06 00:27:40 +0000 |
commit | 882fa0ab33cec0aaa9ebe942cbfe759fcf8f4a4e (patch) | |
tree | 5364772baa2f9851876bff7f04437bae0fec8123 /modules/upload/upload.test | |
parent | bb460ee72782448df391e00b881beca3e5f254b5 (diff) | |
download | brdo-882fa0ab33cec0aaa9ebe942cbfe759fcf8f4a4e.tar.gz brdo-882fa0ab33cec0aaa9ebe942cbfe759fcf8f4a4e.tar.bz2 |
#563000 by drewish, quicksketch, catch, and yched: DIE upload module, DIE! Long live File module! :D
Diffstat (limited to 'modules/upload/upload.test')
-rw-r--r-- | modules/upload/upload.test | 234 |
1 files changed, 0 insertions, 234 deletions
diff --git a/modules/upload/upload.test b/modules/upload/upload.test deleted file mode 100644 index 31873acc9..000000000 --- a/modules/upload/upload.test +++ /dev/null @@ -1,234 +0,0 @@ -<?php -// $Id$ - -/** - * @file - * This file contains tests for the upload module. - */ - - -class UploadTestCase extends DrupalWebTestCase { - public static function getInfo() { - return array( - 'name' => 'Upload functionality', - 'description' => 'Check content uploaded to nodes.', - 'group' => 'Upload', - ); - } - - function setUp() { - parent::setUp('upload'); - } - - /** - * Create node; upload files to node; and edit, and delete uploads. - */ - function testNodeUpload() { - global $base_url; - $admin_user = $this->drupalCreateUser(array('administer site configuration')); - $web_user = $this->drupalCreateUser(array('access content', 'edit own page content', 'upload files', 'view uploaded files')); - - $this->drupalLogin($admin_user); - - // Setup upload settings. - $edit = array(); - $edit['upload_list_default'] = '1'; // Yes. - $edit['upload_extensions_default'] = 'jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp'; - $edit['upload_uploadsize_default'] = '1.5'; - $edit['upload_usersize_default'] = '1.5'; - $this->drupalPost('admin/config/media/uploads', $edit, t('Save configuration')); - $this->assertText('The configuration options have been saved.', 'Upload setting saved.'); - - $this->drupalLogout(); - $this->drupalLogin($web_user); - - // Create a node and attempt to attach files. - $node = $this->drupalCreateNode(); - $text_files = $this->drupalGetTestFiles('text'); - $files = array(current($text_files)->uri, next($text_files)->uri); - - $this->uploadFile($node, $files[0]); - $this->uploadFile($node, $files[1]); - - // Check to see that uploaded file is listed in detail page and actually accessible. - $this->assertText(basename($files[0]), basename($files[0]) . ' found on node.'); - $this->assertText(basename($files[1]), basename($files[1]) . ' found on node.'); - - $this->checkUploadedFile(basename($files[0])); - $this->checkUploadedFile(basename($files[1])); - - // Check that files are also accessible when using private files. - variable_set('file_default_scheme', 'private'); - $this->checkUploadedFile(basename($files[0])); - $this->checkUploadedFile(basename($files[1])); - - // Assure that the attachment link appears on teaser view and has correct count. - $node = node_load($node->nid); - $teaser = drupal_render(node_build($node, 'teaser')); - $this->assertTrue(strpos($teaser, format_plural(2, '1 attachment', '@count attachments')), 'Attachments link found on node teaser.'); - - // Fetch db record and use fid to rename and delete file. - $upload = db_query('SELECT fid, description FROM {upload} WHERE nid = :nid', array(':nid' => $node->nid))->fetchObject(); - if ($upload) { - // Rename file. - $edit = array(); - $edit['files[' . $upload->fid . '][description]'] = $new_name = substr($upload->description, 1); - $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save')); - $this->assertRaw(t('Page %title has been updated.', array('%title' => $node->title[LANGUAGE_NONE][0]['value'])), 'File renamed successfully.'); - - $this->assertText($new_name, $new_name . ' found on node.'); - $this->assertNoText($upload->description, $upload->description . ' not found on node.'); - - // Delete a file. - $edit = array(); - $edit['files[' . $upload->fid . '][remove]'] = TRUE; - $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save')); - $this->assertRaw(t('Page %title has been updated.', array('%title' => $node->title[LANGUAGE_NONE][0]['value'])), 'File deleted successfully.'); - - $this->assertNoText($new_name, $new_name . ' not found on node.'); - $uri = 'public://' . $upload->description; - $external_uri = file_stream_wrapper_get_instance_by_uri($uri)->getExternalUrl(); - $this->drupalGet($external_uri, array('external' => TRUE)); - $this->assertResponse(array(404), 'Uploaded ' . $upload->description . ' is not accessible.'); - } - else { - $this->fail('File upload record not found in database.'); - } - } - - /** - * Ensure the the file filter works correctly by attempting to upload a non-allowed file extension. - */ - function testFilesFilter() { - $admin_user = $this->drupalCreateUser(array('administer site configuration')); - $web_user = $this->drupalCreateUser(array('access content', 'edit own page content', 'upload files', 'view uploaded files')); - - $this->drupalLogin($admin_user); - - // Setup upload settings. - $settings = array(); - $settings['upload_list'] = '1'; // Yes. - $settings['upload_extensions'] = 'html'; - $settings['upload_uploadsize'] = '1'; - $settings['upload_usersize'] = '1'; - $this->setUploadSettings($settings, $this->getSimpletestRoleId($web_user)); - - $this->drupalLogin($web_user); - - $node = $this->drupalCreateNode(); - - // Attempt to upload .txt file when .html is only extension allowed. - $text_file = current($this->drupalGetTestFiles('text')); - // Select a file that's less than the 1MB upload limit so we only test one - // limit at a time. - $this->uploadFile($node, $text_file->uri, FALSE); - // Test the error message in two steps in case there are additional errors - // that change the error message's format. - $this->assertRaw(t('The specified file %name could not be uploaded.', array('%name' => $text_file->filename)), t('File %filepath was not allowed to be uploaded', array('%filepath' => $text_file->uri))); - $this->assertRaw(t('Only files with the following extensions are allowed: %files-allowed.', array('%files-allowed' => $settings['upload_extensions'])), t('File extension cited as reason for failure')); - - // Attempt to upload .html file when .html is only extension allowed. - $html_files = array_values($this->drupalGetTestFiles('html')); - // Use the HTML file with the .html extension, $html_files[0] has a .txt - // extension. - $html_file = $html_files[1]->uri; - $this->uploadFile($node, $html_file); - $this->assertNoRaw(t('The specified file %name could not be uploaded.', array('%name' => basename($html_file))), t('File ' . $html_file . ' was allowed to be uploaded')); - } - - /** - * Attempt to upload a file that is larger than the maxsize and see that it fails. - */ - function testLimit() { - $files = $this->drupalGetTestFiles('text', 1310720); // 1 MB. - $file = current($files)->uri; - - $admin_user = $this->drupalCreateUser(array('administer site configuration')); - $web_user = $this->drupalCreateUser(array('access content', 'edit own page content', 'upload files', 'view uploaded files')); - - $this->drupalLogin($admin_user); - - // Setup upload settings. - $settings = array(); - $settings['upload_list'] = '1'; // Yes. - $settings['upload_extensions'] = 'jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp'; - $settings['upload_uploadsize'] = '0.5'; - $settings['upload_usersize'] = '1.5'; - $this->setUploadSettings($settings, $this->getSimpletestRoleId($web_user)); - - $this->drupalLogin($web_user); - - $node = $this->drupalCreateNode(); - - // Attempt to upload file which is bigger than the maximum size of 0.5 MB. - $this->uploadFile($node, $file, FALSE); - - $info = stat($file); - $filename = basename($file); - $filesize = format_size($info['size']); - $maxsize = format_size(parse_size(($settings['upload_uploadsize'] * 1024) . 'KB')); // Won't parse decimals. - // Test the error message in two steps in case there are additional errors - // that change the error message's format. - $this->assertRaw(t('The specified file %name could not be uploaded.', array('%name' => $filename)), t('File upload was blocked')); - $this->assertRaw(t('The file is %filesize exceeding the maximum file size of %maxsize.', array('%filesize' => $filesize, '%maxsize' => $maxsize)), t('File size cited as problem with upload')); - } - - function setUploadSettings($settings, $rid = NULL) { - $edit = array(); - foreach ($settings as $key => $value) { - $edit[$key . '_default'] = $value; - if ($rid !== NULL && $key != 'upload_list' && $key != 'upload_max_resolution_x' && $key != 'upload_max_resolution_y') { - $edit[$key . '_' . $rid] = $value; - } - } - $this->drupalPost('admin/config/media/uploads', $edit, 'Save configuration'); - $this->assertText('The configuration options have been saved.', 'Upload setting saved.'); - } - - /** - * Upload file to specified node. - * - * @param object $node Node object. - * @param string $filename Name of file to upload. - * @param boolean $assert Assert that the node was successfully updated. - */ - function uploadFile($node, $filename, $assert = TRUE) { - $edit = array(); - $edit['files[upload]'] = $filename; //edit-upload - $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save')); - if ($assert) { - $this->assertRaw(t('Page %title has been updated.', array('%title' => $node->title[LANGUAGE_NONE][0]['value'])), 'File attached successfully.'); - } - } - - /** - * Check that uploaded file is accessible and verify the contents against the original. - * - * @param string $filename Name of file to verify. - */ - function checkUploadedFile($filename) { - $file = 'public://' . $filename; - $this->drupalGet(file_create_url($file), array('external' => TRUE)); - $this->assertResponse(array(200), 'Uploaded ' . $filename . ' is accessible.'); - $this->assertTrue(strpos($this->drupalGetHeader('Content-Type'), 'text/plain') === 0, t('MIME type is text/plain.')); - $this->assertEqual(file_get_contents($file), $this->drupalGetContent(), 'Uploaded contents of ' . $filename . ' verified.'); - // Verify file actually is readable and writeable by PHP. - $this->assertTrue(is_readable($file), t('Uploaded file is readable.')); - $this->assertTrue(is_writeable($file), t('Uploaded file is writeable.')); - } - - /** - * Get the role id of the 'simpletest' role associated with a SimpleTest test user. - * - * @param object $user User object. - * @return integer SimpleTest role id. - */ - function getSimpletestRoleId($user) { - foreach ($user->roles as $rid => $role) { - if (preg_match('/s\d+/', $role)) { - return $rid; - } - } - return NULL; - } -} |