Files
sogo/Tests/Integration
Jean Raby d1af8b7801 Imported managesieve.py: implements the client side of the managesieve protocol
Added sieve tests (vacation, forwarding and simple sieve scripts)
Added some caldav scheduling tests cases and resources planning tests.
Added new variables to config.py.in for sieve resources planning tests.

Monotone-Parent: d3ab72b923ee1d1bbd604ea5e7e14b54346aa0b3
Monotone-Revision: 53dfb1b04415248644ed626184df1362cd4ee2f1

Monotone-Author: jraby@inverse.ca
Monotone-Date: 2011-05-03T12:37:34
Monotone-Branch: ca.inverse.sogo
2011-05-03 12:37:34 +00:00
..
2010-01-24 20:40:12 +00:00

setup
-----

(you need "python-simplejson", "python-xml", "python-vobject" and "python-m2crypto"
 in order to run the scripts on Debian)

1) copy config.py.in to config.py (make sure to never EVER add it to monotone)
2) edit config.py to suit your environment
3) make sure that you use a fresh database, with no prior information in it
4) make sure that SOGoCalendarDefaultRoles and SOGoContactsDefaultRoles are empty or undefined
5) run the test scripts

runnable scripts
----------------

all.py - run all scripts below at once
test-webdavsync.py - explicit
test-davacl.py - dav acl tests for calendar and addressbook modules

other scripts
-------------

propfind.py - a sample implementation of a PROPFIND request using webdavlib

* developers
------------

- Test methods are always prefixed with "test". Sometimes, it's easier to
track down a problem by enabling only one test at a time. One possible method
is to replace "def test" with "def xtest" and replace it back when the
problems are solved.

- Test failures start with "FAIL:". Those are the ones that indicate possible
  bugs in the application, if the test is itself known to work.
  For example like this:

======================================================================
FAIL: 'modify' PUBLIC, 'view all' PRIVATE, 'view d&t' confidential
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./davacl.py", line 75, in testModifyPublicViewAllPrivateViewDConfidential
    self._testRights({ "pu": "m", "pr": "v", "co": "d" })
  File "./davacl.py", line 119, in _testRights
    self._testCreate(rights)
  File "./davacl.py", line 165, in _testCreate
    exp_code)
  File "./davacl.py", line 107, in _putEvent
    % (exp_status, put.response["status"]))
AssertionError: event creation/modification: expected status code '403' (received '201')

- Test errors start with "ERRORS" and most likely indicate a bug in the test
  code itself.

- Always set a doc string on the test methods, especially for complex test
  cases.

- When writing tests, be aware that contrarily to unit tests, functional tests
  often imply a logical order between the different steps.