update('SilverStripe\\Control\\Director', 'alternate_base_url', '/mysite/');
}
public function tearDown() {
AssetStoreTest_SpyStore::reset('DBFileTest');
parent::tearDown();
}
/**
* Test that images in a DBFile are rendered properly
*/
public function testRender() {
$obj = new DBFileTest_Object();
// Test image tag
$fish = realpath(__DIR__ .'/../model/testimages/test-image-high-quality.jpg');
$this->assertFileExists($fish);
$obj->MyFile->setFromLocalFile($fish, 'awesome-fish.jpg');
$this->assertEquals(
'',
trim($obj->MyFile->forTemplate())
);
// Test download tag
$obj->MyFile->setFromString('puppies', 'subdir/puppy-document.txt');
$this->assertEquals(
'',
trim($obj->MyFile->forTemplate())
);
}
public function testValidation() {
$obj = new DBFileTest_ImageOnly();
// Test from image
$fish = realpath(__DIR__ .'/../model/testimages/test-image-high-quality.jpg');
$this->assertFileExists($fish);
$obj->MyFile->setFromLocalFile($fish, 'awesome-fish.jpg');
// This should fail
$this->setExpectedException('SilverStripe\\ORM\\ValidationException');
$obj->MyFile->setFromString('puppies', 'subdir/puppy-document.txt');
}
public function testPermission() {
$obj = new DBFileTest_Object();
// Test from image
$fish = realpath(__DIR__ .'/../model/testimages/test-image-high-quality.jpg');
$this->assertFileExists($fish);
$obj->MyFile->setFromLocalFile($fish, 'private/awesome-fish.jpg', null, null, array(
'visibility' => AssetStore::VISIBILITY_PROTECTED
));
// Test various file permissions work on DBFile
$this->assertFalse($obj->MyFile->canViewFile());
$obj->MyFile->getURL();
$this->assertTrue($obj->MyFile->canViewFile());
$obj->MyFile->revokeFile();
$this->assertFalse($obj->MyFile->canViewFile());
$obj->MyFile->getURL(false);
$this->assertFalse($obj->MyFile->canViewFile());
$obj->MyFile->grantFile();
$this->assertTrue($obj->MyFile->canViewFile());
}
}
/**
* @property DBFile $MyFile
*/
class DBFileTest_Object extends DataObject implements TestOnly {
private static $db = array(
"MyFile" => "DBFile"
);
}
/**
* @property DBFile $AnotherFile
*/
class DBFileTest_Subclass extends DBFileTest_Object implements TestOnly {
private static $db = array(
"AnotherFile" => "DBFile"
);
}
/**
* @property DBFile $MyFile
*/
class DBFileTest_ImageOnly extends DataObject implements TestOnly {
private static $db = array(
"MyFile" => "DBFile('image/supported')"
);
}