private function doTestCreate($op, $alreadyExists, $okStatus, $newSize) { $backendName = $this->backendClass(); $dest = $op['dst']; $this->prepare(array('dir' => dirname($dest))); $oldText = 'blah...blah...waahwaah'; if ($alreadyExists) { $status = $this->backend->doOperation(array('op' => 'create', 'content' => $oldText, 'dst' => $dest)); $this->assertGoodStatus($status, "Creation of file at {$dest} succeeded ({$backendName})."); } $status = $this->backend->doOperation($op); if ($okStatus) { $this->assertGoodStatus($status, "Creation of file at {$dest} succeeded without warnings ({$backendName})."); $this->assertEquals(true, $status->isOK(), "Creation of file at {$dest} succeeded ({$backendName})."); $this->assertEquals(array(0 => true), $status->success, "Creation of file at {$dest} has proper 'success' field in Status ({$backendName})."); } else { $this->assertEquals(false, $status->isOK(), "Creation of file at {$dest} failed ({$backendName})."); } $this->assertEquals(true, $this->backend->fileExists(array('src' => $dest)), "Destination file {$dest} exists after creation ({$backendName})."); $props1 = $this->backend->getFileProps(array('src' => $dest)); $this->assertEquals(true, $props1['fileExists'], "Destination file {$dest} exists according to props ({$backendName})."); if ($okStatus) { // file content is what we saved $this->assertEquals($newSize, $props1['size'], "Destination file {$dest} has expected size according to props ({$backendName})."); $this->assertEquals($newSize, $this->backend->getFileSize(array('src' => $dest)), "Destination file {$dest} has correct size ({$backendName})."); } else { // file content is some other previous text $this->assertEquals(strlen($oldText), $props1['size'], "Destination file {$dest} has original size according to props ({$backendName})."); $this->assertEquals(strlen($oldText), $this->backend->getFileSize(array('src' => $dest)), "Destination file {$dest} has original size according to props ({$backendName})."); } $this->assertBackendPathsConsistent(array($dest)); }
/** * Get properties of a file with a given virtual URL/storage path. * Properties should ultimately be obtained via FSFile::getProps(). * * @param $virtualUrl string * @return Array */ public function getFileProps($virtualUrl) { $path = $this->resolveToStoragePath($virtualUrl); return $this->backend->getFileProps(array('src' => $path)); }