From bb5dc9d0c4f2636ee01d43e71ccf2580deb0b0bb Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Fri, 26 Feb 2010 21:19:09 +0000 Subject: - Patch #573300 by eMPee584: system_retrieve_file() fails in file_unmanaged_copy() --- modules/system/system.test | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'modules/system/system.test') 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 @@ -1599,6 +1599,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. */ -- cgit v1.2.3