diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-07-27 19:53:18 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-07-27 19:53:18 +0000 |
commit | 5468b47b91ee040b35d30f7d8a79c66fba51531d (patch) | |
tree | dd1dd2c05885ae70c3933be545f65abf4f8229fc /modules/simpletest/tests | |
parent | 1aec298314454b67fbc18738c3ffa6f12a14dd59 (diff) | |
download | brdo-5468b47b91ee040b35d30f7d8a79c66fba51531d.tar.gz brdo-5468b47b91ee040b35d30f7d8a79c66fba51531d.tar.bz2 |
- Patch #227232 by dopry, c960657, jmstacey, pwolanin, aaron, drewish: added initial support for PHP file wrappers.
Diffstat (limited to 'modules/simpletest/tests')
-rw-r--r-- | modules/simpletest/tests/file.test | 77 | ||||
-rw-r--r-- | modules/simpletest/tests/file_test.module | 43 |
2 files changed, 120 insertions, 0 deletions
diff --git a/modules/simpletest/tests/file.test b/modules/simpletest/tests/file.test index 54dfa0d61..754505b63 100644 --- a/modules/simpletest/tests/file.test +++ b/modules/simpletest/tests/file.test @@ -2077,3 +2077,80 @@ class FileMimeTypeTest extends DrupalWebTestCase { } } } + +/** + * Tests stream wrapper registry. + */ +class StreamWrapperRegistryTest extends DrupalWebTestCase { + + protected $scheme = 'dummy'; + protected $classname = 'DrupalDummyStreamWrapper'; + + public static function getInfo() { + return array( + 'name' => 'Stream Wrapper Registry', + 'description' => 'Tests stream wrapper registry.', + 'group' => 'File', + ); + } + + function setUp() { + drupal_static_reset('file_get_stream_wrappers'); + parent::setUp('file_test'); + } + + function tearDown() { + parent::tearDown(); + stream_wrapper_unregister($this->scheme); + } + + /** + * Test the getClassName() function. + */ + function testGetClassName() { + // Check the dummy scheme. + $this->assertEqual($this->classname, file_stream_wrapper_get_class($this->scheme), t('Got correct class name for dummy scheme.')); + // Check core's scheme. + $this->assertEqual('DrupalPublicStreamWrapper', file_stream_wrapper_get_class('public'), t('Got correct class name for public scheme.')); + } + + /** + * Test the file_stream_wrapper_get_instance_by_scheme() function. + */ + function testGetInstanceByScheme() { + $instance = file_stream_wrapper_get_instance_by_scheme($this->scheme); + $this->assertEqual($this->classname, get_class($instance), t('Got correct class type for dummy scheme.')); + + $instance = file_stream_wrapper_get_instance_by_scheme('public'); + $this->assertEqual('DrupalPublicStreamWrapper', get_class($instance), t('Got correct class type for public scheme.')); + } + + /** + * Test the URI and target functions. + */ + function testGetInstanceByUri() { + $instance = file_stream_wrapper_get_instance_by_uri($this->scheme . '://foo'); + $this->assertEqual($this->classname, get_class($instance), t('Got correct class type for dummy URI.')); + + $instance = file_stream_wrapper_get_instance_by_uri('public://foo'); + $this->assertEqual('DrupalPublicStreamWrapper', get_class($instance), t('Got correct class type for public URI.')); + + // Test file_stream_wrapper_uri_normalize. + $uri = 'public:///' . $this->originalFileDirectory . '/foo/bar/'; + $uri = file_stream_wrapper_uri_normalize($uri); + $this->assertEqual('public://foo/bar', $uri, t('Got a properly normalized URI')); + + // Test file_uri_taget(). + $this->assertEqual('foo/bar.txt', file_uri_target('public://foo/bar.txt'), t('Got a valid stream target from public://foo/bar.txt')); + $this->assertFalse(file_uri_target('foo/bar.txt'), t('foo/bar.txt is not a valid stream.')); + } + + /** + * Test the scheme functions. + */ + function testGetValidStreamScheme() { + $this->assertEqual('foo', file_uri_scheme('foo://pork//chops'), t('Got the correct scheme from foo://asdf')); + $this->assertTrue(file_stream_wrapper_valid_scheme(file_uri_scheme('public://asdf')), t('Got a valid stream scheme from public://asdf')); + $this->assertFalse(file_stream_wrapper_valid_scheme(file_uri_scheme('foo://asdf')), t('Did not get a valid stream scheme from foo://asdf')); + } +} diff --git a/modules/simpletest/tests/file_test.module b/modules/simpletest/tests/file_test.module index 3873c1ec9..dc6a56b4e 100644 --- a/modules/simpletest/tests/file_test.module +++ b/modules/simpletest/tests/file_test.module @@ -24,6 +24,19 @@ function file_test_menu() { } /** + * Implement hook_stream_wrappers(). + */ +function file_test_stream_wrappers() { + return array( + 'dummy' => array( + 'name' => t('Dummy files'), + 'class' => 'DrupalDummyStreamWrapper', + 'description' => t('Dummy wrapper for simpletest.'), + ), + ); +} + +/** * Form to test file uploads. */ function _file_test_form(&$form_state) { @@ -238,3 +251,33 @@ function file_test_file_move($file, $source) { function file_test_file_delete($file) { _file_test_log_call('delete', array($file)); } + +/** + * Helper class for testing the stream wrapper registry. + * + * Dummy stream wrapper implementation (dummy://). + */ +class DrupalDummyStreamWrapper extends DrupalLocalStreamWrapper { + function getDirectoryPath() { + return variable_get('stream_public_path', 'sites/default/files'); + } + + /** + * Override getInternalUri(). + * + * Return a dummy path for testing. + */ + function getInternalUri() { + return '/dummy/example.txt'; + } + + /** + * Override getExternalUrl(). + * + * Return the HTML URI of a public file. + */ + function getExternalUrl() { + return '/dummy/example.txt'; + } +} + |