Author: ts
Date: Mon Sep 24 13:25:51 2007
New Revision: 6243
Log:
- Added tests for GET requests.
- Refactored transport mock.
- Implemented GET for resource handling.
Added:
trunk/Webdav/tests/clients/rfc/get_collection/
trunk/Webdav/tests/clients/rfc/get_collection/info.txt (with props)
trunk/Webdav/tests/clients/rfc/get_collection/request/
trunk/Webdav/tests/clients/rfc/get_collection/request/body.xml
trunk/Webdav/tests/clients/rfc/get_collection/request/result.ser (with
props)
trunk/Webdav/tests/clients/rfc/get_collection/request/server.php (with
props)
trunk/Webdav/tests/clients/rfc/get_collection/request/uri.txt (with props)
trunk/Webdav/tests/clients/rfc/get_collection/response/
trunk/Webdav/tests/clients/rfc/get_collection/response/body.xml
trunk/Webdav/tests/clients/rfc/get_collection/response/code.txt (with
props)
trunk/Webdav/tests/clients/rfc/get_collection/response/headers.php (with
props)
trunk/Webdav/tests/clients/rfc/get_collection/response/name.txt (with
props)
trunk/Webdav/tests/clients/rfc/get_collection/response/result.ser
trunk/Webdav/tests/clients/rfc/get_resource/
trunk/Webdav/tests/clients/rfc/get_resource/info.txt (with props)
trunk/Webdav/tests/clients/rfc/get_resource/request/
trunk/Webdav/tests/clients/rfc/get_resource/request/body.xml
trunk/Webdav/tests/clients/rfc/get_resource/request/result.ser (with
props)
trunk/Webdav/tests/clients/rfc/get_resource/request/server.php (with
props)
trunk/Webdav/tests/clients/rfc/get_resource/request/uri.txt (with props)
trunk/Webdav/tests/clients/rfc/get_resource/response/
trunk/Webdav/tests/clients/rfc/get_resource/response/body.xml
trunk/Webdav/tests/clients/rfc/get_resource/response/code.txt (with props)
trunk/Webdav/tests/clients/rfc/get_resource/response/headers.php (with
props)
trunk/Webdav/tests/clients/rfc/get_resource/response/name.txt (with props)
trunk/Webdav/tests/clients/rfc/get_resource/response/result.ser
Modified:
trunk/Webdav/src/path_factory.php
trunk/Webdav/src/structs/resource.php
trunk/Webdav/src/transport.php
trunk/Webdav/tests/classes/transport_test_mock.php
trunk/Webdav/tests/client_test.php
trunk/Webdav/tests/client_test_rfc_backend.php
Modified: trunk/Webdav/src/path_factory.php
==============================================================================
--- trunk/Webdav/src/path_factory.php [iso-8859-1] (original)
+++ trunk/Webdav/src/path_factory.php [iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -64,7 +64,7 @@
{
$requestPath = substr( $requestPath, 0, -1 );
}
- return substr( $requestPath, isset( $this->baseUriParts['path'] ) ?
strlen( $this->baseUriParts['path'] ) : 0 );
+ return substr( $requestPath, ( isset( $this->baseUriParts['path'] ) ?
strlen( $this->baseUriParts['path'] ) : 0 ) );
}
/**
Modified: trunk/Webdav/src/structs/resource.php
==============================================================================
--- trunk/Webdav/src/structs/resource.php [iso-8859-1] (original)
+++ trunk/Webdav/src/structs/resource.php [iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -49,9 +49,9 @@
*/
public function __construct( $path, ezcWebdavPropertyStorage
$liveProperties = null, $content = null )
{
- $this->path = $path;
+ $this->path = $path;
$this->liveProperties = $liveProperties;
- $this->content = $content;
+ $this->content = $content;
}
}
Modified: trunk/Webdav/src/transport.php
==============================================================================
--- trunk/Webdav/src/transport.php [iso-8859-1] (original)
+++ trunk/Webdav/src/transport.php [iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -1064,13 +1064,15 @@
case 'ezcWebdavGetCollectionResponse':
$displayInfo = $this->processGetCollectionResponse( $response
);
break;
+ case 'ezcWebdavGetResourceResponse':
+ $displayInfo = $this->processGetResourceResponse( $response );
+ break;
case 'ezcWebdavOptionsResponse':
$displayInfo = $this->processOptionsResponse( $response );
break;
case 'ezcWebdavPropPatchResponse':
$displayInfo = $this->processPropPatchResponse( $response );
break;
- case 'ezcWebdavGetResourceResponse':
case 'ezcWebdavHeadResponse':
case 'ezcWebdavMakeCollectionResponse':
case 'ezcWebdavMoveResponse':
@@ -1123,6 +1125,7 @@
// Do we need to explictly send the Content-Length header here?
+ echo $result;
// All done
}
@@ -1245,6 +1248,31 @@
{
$dom = $this->getDom();
return new ezcWebdavDisplayInformation( $response, $dom );
+ }
+
+ /**
+ * Returns an XML representation of the given response object.
+ *
+ * @param ezcWebdavGetResourceResponse $response
+ * @return DOMDocument|null
+ * @todo Do we need to set more headers here?
+ */
+ protected function processGetResourceResponse(
ezcWebdavGetResourceResponse $response )
+ {
+ // Generate Content-Type header if necessary
+ if ( $response->getHeader( 'Content-Type' ) === null )
+ {
+ $contentTypeProperty = $response->resource->liveProperties->get(
'getcontenttype' );
+ $contentTypeHeader = ( $contentTypeProperty->mime !== null ?
$contentTypeProperty->mime : 'application/octet-stream' ) .
+ '; charset="' . ( $contentTypeProperty->charset !== null ?
$contentTypeProperty->charset : 'utf-8' ) . '"';
+ $response->setHeader( 'Content-Type', $contentTypeHeader );
+ }
+ // Generate Content-Length header if necessary
+ if ( $response->getHeader( 'Content-Length' ) === null )
+ {
+ $response->setHeader( 'Content-Length', ( strlen(
$response->resource->content ) + 1 ) );
+ }
+ return new ezcWebdavDisplayInformation( $response,
$response->resource->content );
}
/**
Modified: trunk/Webdav/tests/classes/transport_test_mock.php
==============================================================================
--- trunk/Webdav/tests/classes/transport_test_mock.php [iso-8859-1] (original)
+++ trunk/Webdav/tests/classes/transport_test_mock.php [iso-8859-1] Mon Sep 24
13:25:51 2007
@@ -9,7 +9,38 @@
protected function sendResponse( ezcWebdavDisplayInformation $info )
{
- $GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_DISPLAY_INFO'] = $info;
+ $headers = array();
+
+ switch ( true )
+ {
+ case ( $info->body instanceof DOMDocument ):
+ $info->body->formatOutput = true;
+ $result = $info->body->saveXML( $info->body );
+ break;
+ case ( is_string( $info->body ) ):
+ $result = $info->body;
+ break;
+ case ( $info->body === null ):
+ default:
+ $result = '';
+ break;
+ }
+
+ // Sends HTTP response code and description
+ $headers[] = (string) $info->response;
+
+ // Send headers defined by response
+ $responseHeaders = $info->response->getHeaders();
+ foreach ( $responseHeaders as $name => $value )
+ {
+ $headers[$name] = $value;
+ }
+
+ // Do we need to explictly send the Content-Length header here?
+
+ $GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_RESPONSE_BODY'] = $result;
+ $GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_RESPONSE_HEADERS'] = $headers;
+ // All done
}
}
Modified: trunk/Webdav/tests/client_test.php
==============================================================================
--- trunk/Webdav/tests/client_test.php [iso-8859-1] (original)
+++ trunk/Webdav/tests/client_test.php [iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -163,20 +163,8 @@
$responseObject = $response['backend']->performRequest( $requestObject
);
$this->transport->handleResponse( $responseObject );
- $responseHeaders = array_merge(
- array( (string)
$GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_DISPLAY_INFO']->response ),
-
$GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_DISPLAY_INFO']->response->getHeaders()
- );
-
- if ( $GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_DISPLAY_INFO']->body !== null
)
- {
-
$GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_DISPLAY_INFO']->body->formatOutput = true;
- $responseBody =
$GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_DISPLAY_INFO']->body->saveXML(
$GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_DISPLAY_INFO']->body );
- }
- else
- {
- $responseBody = null;
- }
+ $responseBody = $GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_RESPONSE_BODY'];
+ $responseHeaders =
$GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_RESPONSE_HEADERS'];
if ( $response['result'] === false )
Modified: trunk/Webdav/tests/client_test_rfc_backend.php
==============================================================================
--- trunk/Webdav/tests/client_test_rfc_backend.php [iso-8859-1] (original)
+++ trunk/Webdav/tests/client_test_rfc_backend.php [iso-8859-1] Mon Sep 24
13:25:51 2007
@@ -22,6 +22,8 @@
case 'copy':
case 'copy_overwrite':
case 'options':
+ case 'get_collection':
+ case 'get_resource':
return self::getIcsUciSetup1();
case 'move_resource':
return self::getIcsUciSetup2();
@@ -252,7 +254,7 @@
$backend->addContents(
array(
'~fielding' => array(
- 'index.html' => '',
+ 'index.html' => '<html><head><title>Foo
Bar</title></head></html>',
),
)
);
@@ -268,6 +270,20 @@
)
);
+ $backend->setProperty(
+ '/~fielding/index.html',
+ new ezcWebdavGetContentTypeProperty(
+ 'text/html', 'utf-8'
+ )
+ );
+
+ $backend->setProperty(
+ '/~fielding/index.html',
+ new ezcWebdavGetContentLengthProperty(
+ '49'
+ )
+ );
+
return $backend;
}
Added: trunk/Webdav/tests/clients/rfc/get_collection/info.txt
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_collection/info.txt (added)
+++ trunk/Webdav/tests/clients/rfc/get_collection/info.txt [iso-8859-1] Mon Sep
24 13:25:51 2007
@@ -1,0 +1,1 @@
+Test case created manually after information found in
http://ietf.org/rfc/rfc2518.txt.
Propchange: trunk/Webdav/tests/clients/rfc/get_collection/info.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_collection/request/body.xml
==============================================================================
(empty)
Added: trunk/Webdav/tests/clients/rfc/get_collection/request/result.ser
==============================================================================
Binary file - no diff available.
Propchange: trunk/Webdav/tests/clients/rfc/get_collection/request/result.ser
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/Webdav/tests/clients/rfc/get_collection/request/server.php
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_collection/request/server.php (added)
+++ trunk/Webdav/tests/clients/rfc/get_collection/request/server.php
[iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -1,0 +1,10 @@
+<?php
+
+return array (
+ 'REQUEST_METHOD' => 'GET',
+ 'REQUEST_URI' => '/~fielding',
+ 'SERVER_PROTOCOL' => 'HTTP/1.1',
+ 'HTTP_HOST' => 'www.ics.uci.edu',
+);
+
+?>
Propchange: trunk/Webdav/tests/clients/rfc/get_collection/request/server.php
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_collection/request/uri.txt
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_collection/request/uri.txt (added)
+++ trunk/Webdav/tests/clients/rfc/get_collection/request/uri.txt [iso-8859-1]
Mon Sep 24 13:25:51 2007
@@ -1,0 +1,1 @@
+http://www.ics.uci.edu/~fielding
Propchange: trunk/Webdav/tests/clients/rfc/get_collection/request/uri.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_collection/response/body.xml
==============================================================================
(empty)
Added: trunk/Webdav/tests/clients/rfc/get_collection/response/code.txt
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_collection/response/code.txt (added)
+++ trunk/Webdav/tests/clients/rfc/get_collection/response/code.txt
[iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -1,0 +1,1 @@
+200
Propchange: trunk/Webdav/tests/clients/rfc/get_collection/response/code.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_collection/response/headers.php
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_collection/response/headers.php (added)
+++ trunk/Webdav/tests/clients/rfc/get_collection/response/headers.php
[iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -1,0 +1,8 @@
+<?php
+
+return array (
+ 'Content-Length' => '8',
+ 'Content-Type' => "utf-8"',
+);
+
+?>
Propchange: trunk/Webdav/tests/clients/rfc/get_collection/response/headers.php
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_collection/response/name.txt
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_collection/response/name.txt (added)
+++ trunk/Webdav/tests/clients/rfc/get_collection/response/name.txt
[iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -1,0 +1,1 @@
+OK
Propchange: trunk/Webdav/tests/clients/rfc/get_collection/response/name.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_collection/response/result.ser
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_collection/response/result.ser (added)
+++ trunk/Webdav/tests/clients/rfc/get_collection/response/result.ser
[iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -1,0 +1,6 @@
+a:2:{s:7:"headers";a:1:{i:0;s:22:"HTTP/1.1 404 Not
Found";}s:4:"body";s:172:"<?xml version="1.0" encoding="UTF-8"?>
+<D:response xmlns:D="DAV:">
+ <D:href>http://foo.bar/~fielding_</D:href>
+ <D:status>HTTP/1.1 404 Not Found</D:status>
+</D:response>
+";}
Added: trunk/Webdav/tests/clients/rfc/get_resource/info.txt
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_resource/info.txt (added)
+++ trunk/Webdav/tests/clients/rfc/get_resource/info.txt [iso-8859-1] Mon Sep
24 13:25:51 2007
@@ -1,0 +1,1 @@
+Test case created manually after information found in
http://ietf.org/rfc/rfc2518.txt.
Propchange: trunk/Webdav/tests/clients/rfc/get_resource/info.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_resource/request/body.xml
==============================================================================
(empty)
Added: trunk/Webdav/tests/clients/rfc/get_resource/request/result.ser
==============================================================================
Binary file - no diff available.
Propchange: trunk/Webdav/tests/clients/rfc/get_resource/request/result.ser
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/Webdav/tests/clients/rfc/get_resource/request/server.php
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_resource/request/server.php (added)
+++ trunk/Webdav/tests/clients/rfc/get_resource/request/server.php [iso-8859-1]
Mon Sep 24 13:25:51 2007
@@ -1,0 +1,10 @@
+<?php
+
+return array (
+ 'REQUEST_METHOD' => 'GET',
+ 'REQUEST_URI' => '/~fielding/index.html',
+ 'SERVER_PROTOCOL' => 'HTTP/1.1',
+ 'HTTP_HOST' => 'www.ics.uci.edu',
+);
+
+?>
Propchange: trunk/Webdav/tests/clients/rfc/get_resource/request/server.php
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_resource/request/uri.txt
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_resource/request/uri.txt (added)
+++ trunk/Webdav/tests/clients/rfc/get_resource/request/uri.txt [iso-8859-1]
Mon Sep 24 13:25:51 2007
@@ -1,0 +1,1 @@
+http://www.ics.uci.edu/~fielding/index.html
Propchange: trunk/Webdav/tests/clients/rfc/get_resource/request/uri.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_resource/response/body.xml
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_resource/response/body.xml (added)
+++ trunk/Webdav/tests/clients/rfc/get_resource/response/body.xml [iso-8859-1]
Mon Sep 24 13:25:51 2007
@@ -1,0 +1,1 @@
+<html><head><title>Foo Bar</title></head></html>
Added: trunk/Webdav/tests/clients/rfc/get_resource/response/code.txt
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_resource/response/code.txt (added)
+++ trunk/Webdav/tests/clients/rfc/get_resource/response/code.txt [iso-8859-1]
Mon Sep 24 13:25:51 2007
@@ -1,0 +1,1 @@
+200
Propchange: trunk/Webdav/tests/clients/rfc/get_resource/response/code.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_resource/response/headers.php
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_resource/response/headers.php (added)
+++ trunk/Webdav/tests/clients/rfc/get_resource/response/headers.php
[iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -1,0 +1,8 @@
+<?php
+
+return array (
+ 'Content-Length' => '49',
+ 'Content-Type' => 'text/html; charset="utf-8"',
+);
+
+?>
Propchange: trunk/Webdav/tests/clients/rfc/get_resource/response/headers.php
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_resource/response/name.txt
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_resource/response/name.txt (added)
+++ trunk/Webdav/tests/clients/rfc/get_resource/response/name.txt [iso-8859-1]
Mon Sep 24 13:25:51 2007
@@ -1,0 +1,1 @@
+OK
Propchange: trunk/Webdav/tests/clients/rfc/get_resource/response/name.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Webdav/tests/clients/rfc/get_resource/response/result.ser
==============================================================================
--- trunk/Webdav/tests/clients/rfc/get_resource/response/result.ser (added)
+++ trunk/Webdav/tests/clients/rfc/get_resource/response/result.ser
[iso-8859-1] Mon Sep 24 13:25:51 2007
@@ -1,0 +1,6 @@
+a:2:{s:7:"headers";a:1:{i:0;s:22:"HTTP/1.1 404 Not
Found";}s:4:"body";s:183:"<?xml version="1.0" encoding="UTF-8"?>
+<D:response xmlns:D="DAV:">
+ <D:href>http://foo.bar/~fielding/index.html_</D:href>
+ <D:status>HTTP/1.1 404 Not Found</D:status>
+</D:response>
+";}
--
svn-components mailing list
[email protected]
http://lists.ez.no/mailman/listinfo/svn-components