summaryrefslogtreecommitdiff
path: root/modules/system/system.test
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-02-26 21:19:09 +0000
committerDries Buytaert <dries@buytaert.net>2010-02-26 21:19:09 +0000
commitbb5dc9d0c4f2636ee01d43e71ccf2580deb0b0bb (patch)
tree9d1a12eccca80deda9a2ff6d479cad0c24b59d6a /modules/system/system.test
parentbbbe8c178c4ea336c4d14b6eadcff822f5d8330c (diff)
downloadbrdo-bb5dc9d0c4f2636ee01d43e71ccf2580deb0b0bb.tar.gz
brdo-bb5dc9d0c4f2636ee01d43e71ccf2580deb0b0bb.tar.bz2
- Patch #573300 by eMPee584: system_retrieve_file() fails in file_unmanaged_copy()
Diffstat (limited to 'modules/system/system.test')
-rw-r--r--modules/system/system.test44
1 files changed, 44 insertions, 0 deletions
diff --git a/modules/system/system.test b/modules/system/system.test
index 79e141225..831c8a6fd 100644
--- a/modules/system/system.test
+++ b/modules/system/system.test
@@ -1600,6 +1600,50 @@ class FloodFunctionalTest extends DrupalWebTestCase {
}
/**
+ * Test HTTP file downloading capability.
+ */
+class RetrieveFileTestCase extends DrupalWebTestCase {
+ public static function getInfo() {
+ return array(
+ 'name' => 'HTTP file retrieval',
+ 'description' => 'Checks HTTP file fetching and error handling.',
+ 'group' => 'System',
+ );
+ }
+
+ /**
+ * Invokes system_retrieve_file() in several scenarios.
+ */
+ function testFileRetrieving() {
+ // Test 404 handling by trying to fetch a randomly named file.
+ drupal_mkdir($sourcedir = 'public://' . $this->randomName());
+ $filename = $this->randomName();
+ $url = file_create_url($sourcedir . '/' . $filename);
+ $retrieved_file = system_retrieve_file($url);
+ $this->assertFalse($retrieved_file, t('Non-existent file not fetched.'));
+
+ // Actually create that file, download it via HTTP and test the returned path.
+ file_put_contents($sourcedir . '/' . $filename, 'testing');
+ $retrieved_file = system_retrieve_file($url);
+ $this->assertEqual($retrieved_file, 'public://' . $filename, t('Sane path for downloaded file returned (public:// scheme).'));
+ $this->assertTrue(is_file($retrieved_file), t('Downloaded file does exist (public:// scheme).'));
+ $this->assertEqual(filesize($retrieved_file), 7, t('File size of downloaded file is correct (public:// scheme).'));
+ file_unmanaged_delete($retrieved_file);
+
+ // Test downloading file to a different location.
+ drupal_mkdir($targetdir = 'temporary://' . $this->randomName());
+ $retrieved_file = system_retrieve_file($url, $targetdir);
+ $this->assertEqual($retrieved_file, "$targetdir/$filename", t('Sane path for downloaded file returned (temporary:// scheme).'));
+ $this->assertTrue(is_file($retrieved_file), t('Downloaded file does exist (temporary:// scheme).'));
+ $this->assertEqual(filesize($retrieved_file), 7, t('File size of downloaded file is correct (temporary:// scheme).'));
+ file_unmanaged_delete($retrieved_file);
+
+ file_unmanaged_delete_recursive($sourcedir);
+ file_unmanaged_delete_recursive($targetdir);
+ }
+}
+
+/**
* Functional tests shutdown functions.
*/
class ShutdownFunctionsTest extends DrupalWebTestCase {