eZ Components - Webdav - Client test specification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Author: Kore Nordmann, Tobias Schlitt
:Revision: $Rev$
:Date: $Date$
:Status: Draft
.. contents::
Scope
=====
The scope of this document is to define how client test suits will be created
for the Webdav component of the eZ Components. The technical realization of
client test suite generation is handled by the class
ezcWebdavClientTestGenerator, contained in
Webdav/tests/scripts/test_generator.php. The purpose of this document is to
describe the necessary steps for creating a new client test suite.
Procedure
==========
This section will explain step by stepl how a new client is to be integrated
with the Webdav component.
Setup
-----
First you need to set up a test environment that logs requests and the
corresponding responses generated by the Webdav component. For this purpose a
wrapper class for ezcWebdavServer exists, which automatically mocks all known
transport classes to retrieve the desired data and creates client test suite
like log directories.
Setup a client test suite generator using ezcWebdavClientTestGenerator from
Webdav/tests/scripts/test_generator.php.
For this you need a mechnisma like mod_rewrite in place to make the path
factory working. It is recommended to use a dedicated virtual host for
testing. For additional setup information see the class documentation of the
generator.
Test the setup
--------------
Before a new client can be tested using this setup it should be verified, that
the setup works correctly. A good way to do so is to use Litmus_ and compare
the log of a testrun against the server with the logs in SVN.
.. _Litmus: http://www.webdav.org/neon/litmus/
Integration tests
-----------------
To test how well a desired client works a procedure of defined steps should be
used. The integrator must usually perform these manually and inspect the
results displayed in the client. If the result differs from the real situation
in the server or does not reflect the expectations indicated by other (working)
clients, a new ezcWebdavTransport inheriting class must be started, that
adjusts the behaviour accordingly.
Remember that you need to delete the contents of the tmp/ and log/ directories
on every restart, to use a clean environment. Otherwise the generated test
cases would behave different in the test runner. When adding a new transport
extension, this needs to be configured in the server before the generator in
instanciated to get it properly mocked for capturing.
This testing procedur must be repeated until the integrator is satisfied with
all step results and the test procedure overall, adjusting the extending
transport layer accordingly.
The following test steps define a client test suite. The actions described need
to be performed in the defined order as good as the clients features support
them. If a step is not supported at all, it may be ignored and following test
cases may be adjusted.
View /
- Collection: "collection"
- Files: "file.bin", "file.xml"
View /file.xml
- Content: "\n"
View /collection
- Collection: "subdir"
- Files: "file.txt"
Back to /
Upload put_test to /
View /
- Collection: "collection", "put_test"
- Files: "file.bin", "file.xml"
View /put_test
- Collection: "collection"
- Files: "put_test.html"
Back to /
Rename /put_test to /new_collection
Move /new_collection to /collection/new_collection
View /collection
- Collection: "subdir", "new_collection"
- Files: "file.txt"
Copy /collection/new_collection to /collection/uploaded
View /collection
- Collection: "subdir", "uploaded", "new_collection"
- Files: "file.txt"
Test suite generation
---------------------
If the client works flawlessly with all test steps, the transport
implementation (if one was needed) can be added to the default distribution.
With that, a test suite for this client is necessary, reflecting all steps
defined in the plast section. To do this take care for a clean environment
(rm -rf tmp/* log/* ) and perform all test steps, re-checking that all results
are as expected.
Create a new directory for the client in Webdav/tests/clients/, named after the
clients program name in lowercase letters. Do not use spaces, but underscores,
if necessary in the name. Copy the client_cadaver_test.php file and adjust it
to your needs and test it, using::
$ php UnitTest/src/runtests.php Webdav/tests/client__test.php
If the test suite gives failures or errors, your transport is not intgrated
correctly in the default component or you made something wrong during
generation. Retry.
If everything woks, add your new test suite to the overall test suite of the
component, run the whole test suite and verify that everything works as
expected again and commit your changes / send a patch, including all changes
and new files.
Other important clients
=======================
- WebDAVFS/1.*
- XML Spy
- Dreamweaver-WebDAV-SCM1
..
Local Variables:
mode: rst
fill-column: 79
End:
vim: et syn=rst tw=79