Monotone-Parent: e9d4010d6c952c0aa503fa4571a589fb91c356b5

Monotone-Revision: b6518b59a7eb387bb26b065aa4b947048534a96a

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-07-13T17:36:32
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2010-07-13 17:36:32 +00:00
parent 10059831ab
commit 9afaff4af4
4 changed files with 142 additions and 0 deletions

View File

@ -1,5 +1,11 @@
2010-07-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Tests/Integration/test-put.py: new test module executing X puts
based on a number of auto-generated events configured in config.py
* Tests/Integration/ev_generator.py: new module producing
auto-generated events based on a number of days
* Tests/Integration/sogotests.py: new module overriding
certain methods from the "unittest" module in order to
automatically execute the tests in verbose mode and by displaying

View File

@ -13,3 +13,5 @@ attendee1 = "user@domain.com"
attendee1_delegate = "otheruser@domain.com"
mailserver = "imaphost"
testput_nbrdays = 30

View File

@ -0,0 +1,92 @@
import time
def hours(nbr):
return nbr * 3600
def days(nbr):
return nbr * hours(24)
class ev_generator:
ev_templ = """
BEGIN:VCALENDAR\r
VERSION:2.0\r
PRODID:-//Inverse//Event Generator//EN\r
CALSCALE:GREGORIAN\r
BEGIN:VTIMEZONE\r
TZID:America/Montreal\r
BEGIN:DAYLIGHT\r
TZOFFSETFROM:-0500\r
TZOFFSETTO:-0400\r
DTSTART:20070311T020000\r
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r
TZNAME:EDT\r
END:DAYLIGHT\r
BEGIN:STANDARD\r
TZOFFSETFROM:-0400\r
TZOFFSETTO:-0500\r
DTSTART:20071104T020000\r
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r
TZNAME:EST\r
END:STANDARD\r
END:VTIMEZONE\r
BEGIN:VEVENT\r
SEQUENCE:4\r
TRANSP:OPAQUE\r
UID:%(uid)s\r
SUMMARY:%(summary)s\r
DTSTART;TZID=America/Montreal:%(start)s\r
DTEND;TZID=America/Montreal:%(end)s\r
CREATED:20080711T231608Z\r
DTSTAMP:20080711T231640Z\r
END:VEVENT\r
END:VCALENDAR\r
"""
def __init__(self, maxDays):
self.reset(maxDays)
def reset(self, maxDays):
self.maxDays = maxDays
self.currentDay = 0
self.currentStart = 0
today = time.mktime(time.localtime())
self.firstDay = today - days(maxDays + 30)
def _calendarDate(self, eventTime):
timeStruct = time.localtime(eventTime)
return time.strftime("%Y%m%dT%H0000", timeStruct)
def _iterValues(self):
event = None
if (self.currentDay < self.maxDays):
eventStart = (self.firstDay
+ days(self.currentDay)
+ hours(self.currentStart + 8))
eventEnd = eventStart + hours(1)
thatDay = time.localtime(int(eventStart))
uid = "Event%d%d" % (eventStart, eventEnd)
summary = "%s - event %d" % (time.strftime("%Y-%m-%d", thatDay),
self.currentStart)
start = self._calendarDate(eventStart)
end = self._calendarDate(eventEnd)
event = {'uid': uid,
'summary': summary,
'start': start,
'end': end}
self.currentStart = self.currentStart + 1
if (self.currentStart > 7):
self.currentStart = 0
self.currentDay = self.currentDay + 1
return event
def iter(self):
hasMore = False
entryValues = self._iterValues()
if (entryValues is not None):
self.event = (self.ev_templ % entryValues).strip()
hasMore = True
return hasMore

View File

@ -0,0 +1,42 @@
#!/usr/bin/python
from config import hostname, port, username, password, testput_nbrdays
import ev_generator
import sogotests
import unittest
import webdavlib
class HTTPUnparsedURLTest(unittest.TestCase):
def __init__(self, arg):
unittest.TestCase.__init__(self, arg)
self.client = webdavlib.WebDAVClient(hostname, port,
username, password)
def setUp(self):
self.resource = '/SOGo/dav/%s/Calendar/test-dav-put/' % username
delete = webdavlib.WebDAVDELETE(self.resource)
self.client.execute(delete)
mkcol = webdavlib.WebDAVMKCOL(self.resource)
self.client.execute(mkcol)
self.assertEquals(mkcol.response["status"], 201,
"preparation: failure creating collection"
"(code = %d)" % mkcol.response["status"])
def testPUT(self):
gen = ev_generator.ev_generator(testput_nbrdays)
counter = 1
while gen.iter():
event = gen.event
url = self.resource + "event-%d.ics" % counter
put = webdavlib.HTTPPUT(url, event)
put.content_type = "text/calendar; charset=utf-8"
self.client.execute(put)
counter = counter + 1
def tearDown(self):
delete = webdavlib.WebDAVDELETE(self.resource)
self.client.execute(delete)
if __name__ == "__main__":
sogotests.runTests()