Author: ts
Date: Tue Sep 18 18:17:57 2007
New Revision: 6191
Log:
- Restructured client tests to be more generic.
- Prepared test structure for integration of RFC tests.
Added:
trunk/Webdav/tests/clients/cadaver/propfind/
trunk/Webdav/tests/clients/cadaver/propfind/request/
trunk/Webdav/tests/clients/cadaver/propfind/request/body.xml
- copied unchanged from r6190,
trunk/Webdav/tests/clients/cadaver/propfind.body.xml
trunk/Webdav/tests/clients/cadaver/propfind/request/result.ser
- copied unchanged from r6190,
trunk/Webdav/tests/clients/cadaver/propfind.result.txt
trunk/Webdav/tests/clients/cadaver/propfind/request/server.php
- copied unchanged from r6190,
trunk/Webdav/tests/clients/cadaver/propfind.server.php
trunk/Webdav/tests/clients/cadaver/propfind_extended/
trunk/Webdav/tests/clients/cadaver/propfind_extended/request/
trunk/Webdav/tests/clients/cadaver/propfind_extended/request/body.xml
- copied unchanged from r6190,
trunk/Webdav/tests/clients/cadaver/propfind_extended.body.xml
trunk/Webdav/tests/clients/cadaver/propfind_extended/request/result.ser
- copied unchanged from r6190,
trunk/Webdav/tests/clients/cadaver/propfind_extended.result.txt
trunk/Webdav/tests/clients/cadaver/propfind_extended/request/server.php
- copied unchanged from r6190,
trunk/Webdav/tests/clients/cadaver/propfind_extended.server.php
Removed:
trunk/Webdav/tests/clients/cadaver/propfind.body.xml
trunk/Webdav/tests/clients/cadaver/propfind.result.txt
trunk/Webdav/tests/clients/cadaver/propfind.server.php
trunk/Webdav/tests/clients/cadaver/propfind_extended.body.xml
trunk/Webdav/tests/clients/cadaver/propfind_extended.result.txt
trunk/Webdav/tests/clients/cadaver/propfind_extended.server.php
Modified:
trunk/Webdav/tests/client_test.php
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] Tue Sep 18 18:17:57 2007
@@ -2,16 +2,21 @@
abstract class ezcWebdavClientTest extends ezcTestCase
{
- protected $testSets = array();
protected $dataDir;
protected $transportClass;
- protected $currentTestSet;
+ private $testSets = array();
+
+ private $currentTestSet;
/**
- * Needs
+ * Needs to set different options.
+ * [EMAIL PROTECTED] $this->dataDir} needs to be set to the base path of
+ * Webdav/tests/clients/<clientname>
+ * [EMAIL PROTECTED] $this->transportClass} needs to be set to the
transport class to
+ * use, e.g. [EMAIL PROTECTED] ezcWebdavTransportTestMock} for a RFC
compliant test.
*
* @return void
*/
@@ -22,9 +27,9 @@
parent::__construct();
$this->setupTestEnvironment();
- foreach ( glob( $this->dataDir . '/*.result.txt' ) as $resultFile )
+ foreach ( glob( $this->dataDir . '/*' ) as $testSetDir )
{
- $this->testSets[] = dirname( $resultFile ) . '/' . basename(
$resultFile, '.result.txt' );
+ $this->testSets[] = $testSetDir;
}
}
@@ -45,64 +50,105 @@
throw new PHPUnit_Framework_ExpectationFailedException( "No
currentTestSet set for test " . __CLASS__ );
}
- $this->runTestSet();
+ $this->runTestSet( $this->currentTestSet );
}
- protected function runTestSet()
+ protected function runTestSet( $testSetName )
{
- if ( file_exists( ( $resultFile = $this->currentTestSet .
'.result.txt' ) ) === true
- && ( $referenceResult = file_get_contents( $resultFile ) ) !== ''
- )
+ $requestObject = null;
+
+ // Request test
+ if ( file_exists( ( $requestDir = "{$testSetName}/request" ) ) ===
true )
{
- $referenceResult = unserialize( file_get_contents( $resultFile ) );
- }
- else
- {
- $referenceResult = false;
+ // Settings
+ $request = array();
+ $request['result'] = $this->getFileContent( $requestDir, 'result'
);
+ $request['server'] = $this->getFileContent( $requestDir, 'server'
);
+ $request['body'] = $this->getFileContent( $requestDir, 'body' );
+ $request['uri'] = $this->getFileContent( $requestDir, 'uri' );
+
+ $requestObject = $this->runRequestTest( $request );
}
- // Optionally set a body.
- if ( file_exists( ($bodyFile = $this->currentTestSet . '.body.xml' ) )
)
+ // Response test
+ if ( file_exists( ( $responseDir = "{$this->dataDir}/response" ) ) ===
true && $requestObject !== null )
{
- $GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_BODY'] = file_get_contents(
$bodyFile );
+ // Settings
+ $response = array();
+ $response['result'] = $this->getFileContent( $responseDir,
'result' );
+ $response['headers'] = $this->getFileContent( $responseDir,
'headers' );
+ $response['body'] = $this->getFileContent( $responseDir, 'body'
);
+
+ $responseObject = $this->runResponseTest( $response,
$requestObject );
}
- else
+ }
+
+ protected function getFileContent( $dir, $file )
+ {
+ // No file exists
+ if ( count( $files = glob( "{$dir}/{$file}.*" ) ) < 1 )
{
- $GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_BODY'] = '';
+ return false;
}
+ // The first file overrides
+ $fileInfo = pathinfo( ( $filePath = $files[0] ) );
+ $fileContent = '';
+ switch( $fileInfo['extension'] )
+ {
+ case 'php':
+ $fileContent = require $filePath;
+ break;
+ case 'ser':
+ $fileContent = unserialize( file_get_contents( $filePath ) );
+ break;
+ case 'txt':
+ default:
+ $fileContent = file_get_contents( $filePath );
+ break;
+ }
+ return $fileContent;
+ }
+
+ protected function runRequestTest( array $request )
+ {
+ // Optionally set a body.
+ $GLOBALS['EZC_WEBDAV_TRANSPORT_TEST_BODY'] = ( $request['body'] !==
false ? $request['body'] : '' );
+
// Optionally overwrite $_SERVER
- if ( file_exists( ( $serverFile = $this->currentTestSet .
'.server.php' ) ) )
- {
- $_SERVER = require $serverFile;
- }
-
- if ( file_exists( ( $uriFile = $this->currentTestSet . 'uri.txt' ) ) )
- {
- $uri = file_get_contents( $uriFile );
- }
- else
- {
- $uri = 'http://localhost/webdav.php';
- }
+ $_SERVER = ( $request['server'] !== false ? $request['server'] :
$_SERVER );
+ // Optionally set an URI different from 'http://localhost/webdav.php'
+ $uri = ( $request['uri'] !== false ? $request['uri'] :
'http://localhost/webdav.php' );
+
+ // Setup test environment
$transportClass = $this->transportClass;
$transport = new $transportClass();
+
+ // Begin request test
$result = $transport->parseRequest( $uri );
- if ( $referenceResult === false )
+ if ( $request['result'] === false )
{
// Regenerate
- file_put_contents( $resultFile, serialize( $result ) );
+ file_put_contents(
+ "{$this->dataDir}/request/result.txt",
+ serialize( $result )
+ );
}
$this->assertEquals(
- $referenceResult,
+ $request['result'],
$result,
"Result not parsed correctly for test set
'{$this->currentTestSet}'."
);
}
+ protected function runResponseTest( array $response, ezcWebdavRequest
$requestObject )
+ {
+ // To be implemented...
+ }
+
}
?>
--
svn-components mailing list
[email protected]
http://lists.ez.no/mailman/listinfo/svn-components