private function doTestDescribe($op, $withSource, $okStatus) { $backendName = $this->backendClass(); $source = $op['src']; $this->prepare(array('dir' => dirname($source))); if ($withSource) { $status = $this->backend->doOperation(array('op' => 'create', 'content' => 'blahblah', 'dst' => $source, 'headers' => array('Content-Disposition' => 'xxx'))); $this->assertGoodStatus($status, "Creation of file at {$source} succeeded ({$backendName})."); if ($this->backend->hasFeatures(FileBackend::ATTR_HEADERS)) { $attr = $this->backend->getFileXAttributes(array('src' => $source)); $this->assertHasHeaders(array('Content-Disposition' => 'xxx'), $attr); } $status = $this->backend->describe(array('src' => $source, 'headers' => array('Content-Disposition' => ''))); // remove $this->assertGoodStatus($status, "Removal of header for {$source} succeeded ({$backendName})."); if ($this->backend->hasFeatures(FileBackend::ATTR_HEADERS)) { $attr = $this->backend->getFileXAttributes(array('src' => $source)); $this->assertFalse(isset($attr['headers']['content-disposition']), "File 'Content-Disposition' header removed."); } } $status = $this->backend->doOperation($op); if ($okStatus) { $this->assertGoodStatus($status, "Describe of file at {$source} succeeded without warnings ({$backendName})."); $this->assertEquals(true, $status->isOK(), "Describe of file at {$source} succeeded ({$backendName})."); $this->assertEquals(array(0 => true), $status->success, "Describe of file at {$source} has proper 'success' field in Status ({$backendName})."); if ($this->backend->hasFeatures(FileBackend::ATTR_HEADERS)) { $this->assertHasHeaders($op['headers'], $attr); } } else { $this->assertEquals(false, $status->isOK(), "Describe of file at {$source} failed ({$backendName})."); } $this->assertBackendPathsConsistent(array($source)); }