diff options
Diffstat (limited to 'modules/system/system.test')
-rw-r--r-- | modules/system/system.test | 44 |
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 { |