public function testHeadCollectionETagHeader()
 {
     $testPath = '/collection/';
     $backend = new ezcWebdavFileBackend($this->tempDir . 'backend/');
     $etag = $backend->getProperty($testPath, 'getetag')->etag;
     $req = new ezcWebdavHeadRequest($testPath);
     $req->validateHeaders();
     $res = $backend->head($req);
     $expectedRes = new ezcWebdavHeadResponse(new ezcWebdavCollection($testPath, $backend->getAllProperties($testPath)));
     $expectedRes->setHeader('ETag', $etag);
     $this->assertEquals($expectedRes, $res, 'Expected response does not match real response.', 0, 20);
 }
 public function testResourceHeadError()
 {
     $backend = new ezcWebdavMemoryBackend(false);
     $backend->addContents(array('foo' => 'bar', 'bar' => array('blubb' => 'Somme blubb blubbs.')));
     $request = new ezcWebdavHeadRequest('/unknown');
     $request->validateHeaders();
     $response = $backend->head($request);
     $this->assertEquals(new ezcWebdavErrorResponse(ezcWebdavResponse::STATUS_404, '/unknown'), $response, 'Expected response does not match real response.', 0, 20);
 }
Beispiel #3
0
 /**
  * Serves HEAD requests.
  *
  * The method receives a {@link ezcWebdavHeadRequest} object containing all
  * relevant information obout the clients request and will return an {@link
  * ezcWebdavErrorResponse} instance on error or an instance of {@link
  * ezcWebdavHeadResponse} on success.
  * 
  * @param ezcWebdavHeadRequest $request
  * @return ezcWebdavResponse
  */
 public function head(ezcWebdavHeadRequest $request)
 {
     $source = $request->requestUri;
     // Check authorization
     if (!ezcWebdavServer::getInstance()->isAuthorized($source, $request->getHeader('Authorization'))) {
         return $this->createUnauthorizedResponse($source, $request->getHeader('Authorization'));
     }
     // Check if resource is available
     if (!$this->nodeExists($source)) {
         return new ezcWebdavErrorResponse(ezcWebdavResponse::STATUS_404, $source);
     }
     $res = null;
     // Init
     if (!$this->isCollection($source)) {
         // Just deliver file without contents
         $res = new ezcWebdavHeadResponse(new ezcWebdavResource($source, $this->getAllProperties($source)));
     } else {
         // Just deliver collection without children
         $res = new ezcWebdavHeadResponse(new ezcWebdavCollection($source, $this->getAllProperties($source)));
     }
     // Add ETag header
     $res->setHeader('ETag', $this->getETag($source));
     // Deliver response
     return $res;
 }
Beispiel #4
0
 public function testResourceHeadError()
 {
     $backend = new ezcWebdavFileBackend($this->tempDir . 'backend/');
     $request = new ezcWebdavHeadRequest('/unknown');
     $request->validateHeaders();
     $response = $backend->head($request);
     $this->assertEquals($response, new ezcWebdavErrorResponse(ezcWebdavResponse::STATUS_404, '/unknown'), 'Expected response does not match real response.', 0, 20);
 }
Beispiel #5
0
 /**
  * Parses the HEAD request and returns a request object.
  *
  * This method is responsible for parsing the HEAD request. It retrieves
  * the current request URI in $path and the request body as $body.  The
  * return value, if no exception is thrown, is a valid {@link
  * ezcWebdavHeadRequest} object.
  *
  * This method may be overwritten to adjust it to special client behaviour.
  * 
  * @param string $path 
  * @param string $body 
  * @return ezcWebdavHeadRequest
  */
 protected function parseHeadRequest($path, $body)
 {
     $req = new ezcWebdavHeadRequest($path);
     $req->setHeaders(ezcWebdavServer::getInstance()->headerHandler->parseHeaders());
     return $req;
 }