summaryrefslogtreecommitdiff
path: root/modules/simpletest
diff options
context:
space:
mode:
Diffstat (limited to 'modules/simpletest')
-rw-r--r--modules/simpletest/tests/file.test77
-rw-r--r--modules/simpletest/tests/file_test.module43
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';
+ }
+}
+