<?php

include dirname(__FILE__) . '/../bootstrap/functional.php';
include dirname(__FILE__) . '/../../lib/test/sfTestFunctionalMediaBrowser.class.php';
$upload_dir = sfConfig::get('sf_web_dir') . '/' . sfConfig::get('app_sf_media_browser_root_dir', 'tests-uploads');
$delete_upload_dir = false;
if (!realpath($upload_dir)) {
    $delete_upload_dir = true;
    mkdir($upload_dir, 0777, true);
    chmod($upload_dir, 0777);
}
$browser = new sfTestFunctionalMediaBrowser(new sfBrowser());
$browser->get('/sf_media_browser')->with('response')->begin()->isStatusCode(200)->checkElement('h2', 'Current directory : /')->end()->createDirectory('my functional test dir')->directoryExists('my-functional-test-dir')->with('response')->checkElement('div.notice', '/The directory was successfully created./')->info('Attempting to create a directory that already exists.')->createDirectory('my functional test dir')->with('response')->checkElement('div.error', '/The directory could not be created./')->deleteDirectory('my-functional-test-dir')->directoryExists('my-functional-test-dir', false)->with('response')->checkElement('div.notice', '/The directory was successfully deleted/')->info('Making subdirectories')->createDirectory('my functional test dir')->click('#sf_media_browser_list .folder a[title="my-functional-test-dir"]')->with('response')->checkElement('h2', 'Current directory : /my-functional-test-dir')->createDirectory('sub folder')->directoryExists('sub-folder')->info('Upload a file into the subdirectory')->uploadFile(dirname(__FILE__) . '/../fixtures/my_test.jpg')->fileExists('my_test.jpg')->deleteFile('my_test.jpg')->fileExists('my_test.jpg', false)->click('li.up a')->with('response')->checkElement('h2', 'Current directory : /')->deleteDirectory('my-functional-test-dir')->directoryExists('my-functional-test-dir', false);
if ($delete_upload_dir) {
    sfMediaBrowserUtils::deleteRecursive($upload_dir);
}
<?php

require dirname(__FILE__) . '/../bootstrap/functional.php';
include dirname(__FILE__) . '/../../lib/test/sfTestFunctionalMediaBrowser.class.php';
$target_name = '/tests-uploads';
$target_path = sfConfig::get('sf_web_dir') . $target_name;
chmod($target_path, 0777);
$root_path_name = sfConfig::get('sf_web_dir') . '/' . sfConfig::get('app_sf_media_browser_root_dir');
$fixture_file = realpath(dirname(__FILE__) . '/../fixtures/my_test.jpg');
if (!realpath($root_path_name)) {
    mkdir($root_path_name);
}
$root_path = realpath($root_path_name);
$b = new sfTestFunctionalMediaBrowser(new sfBrowser());
$t = $b->test();
# CREATE
$b->get('/sf_media_browser')->info('attempt to create a directory outside the root tricking the name')->createDirectory('/my functional test dir')->directoryExists('my-functional-test-dir')->deleteDirectory('my-functional-test-dir')->createDirectory('../my functional test dir2')->directoryExists('my-functional-test-dir2')->deleteDirectory('my-functional-test-dir2');
$b->info('attempt to create a file outside the root tricking the directory name')->uploadFile(dirname(__FILE__) . '/../fixtures/my_test.jpg', $target_name, false)->existsOnDisk($target_path . '/my_test.jpg', false);
@unlink($target_path . '/my_test.jpg');
$b->info('attempt to create a directory outside the root tricking the destination dir name')->createDirectory('my functional test dir3', $target_name, false)->existsOnDisk($target_path . '/my-functional-test-dir3', false)->back();
@rmdir($target_path . '/my-functional-test-dir3');
# DELETE
@mkdir($target_path . '/system-dir');
$b->info('attempt to delete a directory outside the root tricking the directory name')->get('/sf_media_browser/dir_delete?directory=' . urlencode($target_name . '/system-dir'));
$t->ok(file_exists($target_path . '/system-dir'), 'Directories outside root cannot be deleted');
@rmdir($target_path . '/system-dir');
$b->info('attempt to delete a file outside the root tricking the directory name');
touch($target_path . '/system-file.test');
try {
    $b->get('/sf_media_browser/file_delete?file=' . urlencode($target_name . '/system-file.test'));
} catch (sfSecurityException $e) {