class RemoteStreamWrapperTestCase in Remote Stream Wrapper 8
Same name and namespace in other branches
- 7 remote_stream_wrapper.test \RemoteStreamWrapperTestCase
Tests for the remote_stream_wrapper module.
Hierarchy
- class \RemoteStreamWrapperTestCase extends \DrupalWebTestCase
Expanded class hierarchy of RemoteStreamWrapperTestCase
File
- ./
remote_stream_wrapper.test, line 7
View source
class RemoteStreamWrapperTestCase extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Remote stream wrapper',
'description' => 'Tests functionality for remote stream wrappers.',
'group' => 'Remote stream wrapper',
);
}
function setUp() {
parent::setUp(array(
'remote_stream_wrapper',
'image',
));
}
/**
* Override DrupalWebTestCase::drupalGetTestFiles to return 'external' files.
*/
protected function drupalGetTestFiles($type, $size = NULL) {
$files = parent::drupalGetTestFiles($type, $size);
foreach ($files as $file) {
$file->original_uri = $file->uri;
$file->uri = file_create_url($file->uri);
}
return $files;
}
/**
* Test STREAM_WRAPPERS_REMOTE bitmask and file_get_remote_stream_wrappers().
*/
function testBitMasks() {
$cases = array(
array(
'filter' => STREAM_WRAPPERS_ALL,
'result' => TRUE,
),
array(
'filter' => STREAM_WRAPPERS_LOCAL,
'result' => TRUE,
),
array(
'filter' => STREAM_WRAPPERS_READ,
'result' => TRUE,
),
array(
'filter' => STREAM_WRAPPERS_WRITE,
'result' => FALSE,
),
array(
'filter' => STREAM_WRAPPERS_VISIBLE,
'result' => TRUE,
),
array(
'filter' => STREAM_WRAPPERS_HIDDEN,
'result' => FALSE,
),
array(
'filter' => STREAM_WRAPPERS_LOCAL_HIDDEN,
'result' => FALSE,
),
array(
'filter' => STREAM_WRAPPERS_WRITE_VISIBLE,
'result' => FALSE,
),
array(
'filter' => STREAM_WRAPPERS_READ_VISIBLE,
'result' => TRUE,
),
array(
'filter' => STREAM_WRAPPERS_NORMAL,
'result' => FALSE,
),
array(
'filter' => STREAM_WRAPPERS_LOCAL_NORMAL,
'result' => FALSE,
),
);
foreach ($cases as $case) {
$wrappers = file_get_stream_wrappers($case['filter']);
$this
->assertEqual(isset($wrappers['http']), $case['result']);
}
$wrappers = file_get_remote_stream_wrappers();
$this
->assertEqual(count($wrappers), 3, 'Correct number of remote stream wrappers returned.');
}
/**
* Check that basic-level file functions return expected values.
*/
function testFileStat() {
$files = $this
->drupalGetTestFiles('image');
$file = $files[0];
$this
->assertTrue(is_file($file->uri));
$this
->assertFalse(is_dir($file->uri));
$this
->assertEqual(filesize($file->uri), 125);
$this
->assertEqual(image_get_info($file->uri), array(
'width' => 40,
'height' => 20,
'extension' => 'png',
'mime_type' => 'image/png',
'file_size' => 125,
));
}
/**
* Test file CRUD functions with remote files.
*/
function testFileCrud() {
$files = $this
->drupalGetTestFiles('image');
$file = remote_stream_wrapper_file_load_by_uri($files[0]->uri);
$this
->assertFalse($file, 'Remote file not yet saved as a managed file.');
$file = remote_stream_wrapper_file_create_by_uri($files[0]->uri);
file_save($file);
$this
->assertTrue(!empty($file->fid), 'Remote file saved successfully.');
$this
->assertEqual($file->filesize, filesize($files[0]->original_uri));
$this
->assertEqual($file->filemime, file_get_mimetype($files[0]->original_uri));
$loaded_file = remote_stream_wrapper_file_load_by_uri($files[0]->uri);
$this
->assertEqual($loaded_file->fid, $file->fid, 'Remote file managed record loaded by URI.');
// Delete the managed file record.
$result = file_delete($file);
$this
->assertIdentical($result, TRUE, 'Remote file record deleted successfully.');
$this
->assertFalse(remote_stream_wrapper_file_load_by_uri($files[0]->uri), 'Remote file managed record no longer exists.');
}
/**
* Test that remote images can be used with image styles.
*/
function testRemoteImageStyles() {
$files = $this
->drupalGetTestFiles('image');
$file = remote_stream_wrapper_file_create_by_uri($files[0]->uri);
file_save($file);
$generated_uri = remote_stream_wrapper_image_style_path('thumbnail', $file->uri);
$output = theme('image_style', array(
'style_name' => 'thumbnail',
'path' => $file->uri,
));
$this
->drupalSetContent($output);
$elements = $this
->xpath('//img');
$this
->drupalGet($elements[0]['src']);
$this
->assertResponse(200);
$this
->assertTrue(is_file($generated_uri), t('Generated file does exist after we accessed it.'));
$this
->assertRaw(file_get_contents($generated_uri), t('URL returns expected file.'));
$generated_image_info = image_get_info($generated_uri);
$this
->assertEqual($this
->drupalGetHeader('Content-Type'), $generated_image_info['mime_type'], t('Expected Content-Type was reported.'));
$this
->assertEqual($this
->drupalGetHeader('Content-Length'), $generated_image_info['file_size'], t('Expected Content-Length was reported.'));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
RemoteStreamWrapperTestCase:: |
protected | function | Override DrupalWebTestCase::drupalGetTestFiles to return 'external' files. | |
RemoteStreamWrapperTestCase:: |
public static | function | ||
RemoteStreamWrapperTestCase:: |
function | |||
RemoteStreamWrapperTestCase:: |
function | Test STREAM_WRAPPERS_REMOTE bitmask and file_get_remote_stream_wrappers(). | ||
RemoteStreamWrapperTestCase:: |
function | Test file CRUD functions with remote files. | ||
RemoteStreamWrapperTestCase:: |
function | Check that basic-level file functions return expected values. | ||
RemoteStreamWrapperTestCase:: |
function | Test that remote images can be used with image styles. |