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

Reply via email to