summaryrefslogtreecommitdiff
path: root/modules/upload/upload.test
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2009-12-06 00:27:40 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2009-12-06 00:27:40 +0000
commit882fa0ab33cec0aaa9ebe942cbfe759fcf8f4a4e (patch)
tree5364772baa2f9851876bff7f04437bae0fec8123 /modules/upload/upload.test
parentbb460ee72782448df391e00b881beca3e5f254b5 (diff)
downloadbrdo-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.test234
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;
- }
-}