tests/functional tests/unit
Thomas Brüderli
bruederli at kolabsys.com
Fri Feb 13 09:28:17 CET 2015
tests/functional/test_wallace/test_007_invitationpolicy.py | 39 ++++++++++++-
tests/unit/test-012-wallace_invitationpolicy.py | 5 +
2 files changed, 40 insertions(+), 4 deletions(-)
New commits:
commit 464fa287224343979eb2e3701d15e7e954e4789d
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Wed Feb 11 08:48:34 2015 +0100
Add unit and functional tests for verifying the per-sender invitation policies
diff --git a/tests/functional/test_wallace/test_007_invitationpolicy.py b/tests/functional/test_wallace/test_007_invitationpolicy.py
index 090dcf3..cca5b96 100644
--- a/tests/functional/test_wallace/test_007_invitationpolicy.py
+++ b/tests/functional/test_wallace/test_007_invitationpolicy.py
@@ -299,6 +299,17 @@ class TestWallaceInvitationpolicy(unittest.TestCase):
'kolabinvitationpolicy': ['ALL_SAVE_AND_FORWARD','ACT_UPDATE_AND_NOTIFY']
}
+ self.bill = {
+ 'displayname': 'Bill Mayor',
+ 'mail': 'bill.mayor at example.org',
+ 'dn': 'uid=mayor,ou=People,dc=example,dc=org',
+ 'preferredlanguage': 'en_US',
+ 'mailbox': 'user/bill.mayor at example.org',
+ 'kolabcalendarfolder': 'user/bill.mayor/Calendar at example.org',
+ 'kolabtasksfolder': 'user/bill.mayor/Tasks at example.org',
+ 'kolabinvitationpolicy': ['ALL_SAVE_TO_FOLDER:lucy.meyer at example.org','ALL_REJECT']
+ }
+
self.external = {
'displayname': 'Bob External',
'mail': 'bob.external at gmail.com'
@@ -310,6 +321,7 @@ class TestWallaceInvitationpolicy(unittest.TestCase):
user_add("Jack", "Tentative", kolabinvitationpolicy=self.jack['kolabinvitationpolicy'], preferredlanguage=self.jack['preferredlanguage'])
user_add("Mark", "German", kolabinvitationpolicy=self.mark['kolabinvitationpolicy'], preferredlanguage=self.mark['preferredlanguage'])
user_add("Lucy", "Meyer", kolabinvitationpolicy=self.lucy['kolabinvitationpolicy'], preferredlanguage=self.lucy['preferredlanguage'])
+ user_add("Bill", "Mayor", kolabinvitationpolicy=self.bill['kolabinvitationpolicy'], preferredlanguage=self.bill['preferredlanguage'])
time.sleep(1)
from tests.functional.synchronize import synchronize_once
@@ -339,7 +351,7 @@ class TestWallaceInvitationpolicy(unittest.TestCase):
smtp = smtplib.SMTP('localhost', 10026)
smtp.sendmail(from_addr, to_addr, mime_message % (to_addr, method, itip_payload))
- def send_itip_invitation(self, attendee_email, start=None, allday=False, template=None, summary="test", sequence=0, partstat='NEEDS-ACTION'):
+ def send_itip_invitation(self, attendee_email, start=None, allday=False, template=None, summary="test", sequence=0, partstat='NEEDS-ACTION', from_addr=None):
if start is None:
start = datetime.datetime.now()
@@ -354,6 +366,12 @@ class TestWallaceInvitationpolicy(unittest.TestCase):
default_template = itip_invitation
date_format = '%Y%m%dT%H%M%S'
+ if from_addr is not None:
+ if template:
+ template = template.replace("john.doe at example.org", from_addr)
+ else:
+ default_template = default_template.replace("john.doe at example.org", from_addr)
+
self.send_message((template if template is not None else default_template) % {
'uid': uid,
'start': start.strftime(date_format),
@@ -363,7 +381,7 @@ class TestWallaceInvitationpolicy(unittest.TestCase):
'sequence': sequence,
'partstat': partstat
},
- attendee_email)
+ attendee_email, from_addr=from_addr)
return uid
@@ -671,6 +689,7 @@ class TestWallaceInvitationpolicy(unittest.TestCase):
self.assertEqual(event.get_summary(), "test2")
self.assertEqual(event.get_attendee(self.jack['mail']).get_participant_status(), kolabformat.PartNeedsAction)
+
def test_004_copy_to_calendar_and_forward(self):
uid = self.send_itip_invitation(self.lucy['mail'], datetime.datetime(2015,2,11, 14,0,0), summary="test forward")
response = self.check_message_received(self.itip_reply_subject % { 'summary':'test forward', 'status':participant_status_label('ACCEPTED') }, self.lucy['mail'], self.lucy['mailbox'])
@@ -1010,6 +1029,22 @@ class TestWallaceInvitationpolicy(unittest.TestCase):
self.assertIsInstance(event, pykolab.xml.Event)
self.assertEqual(event.get_attendee(self.john['mail']).get_participant_status(), kolabformat.PartAccepted)
+ def test_014_per_sender_policy(self):
+ # send invitation from john => REJECT
+ start = datetime.datetime(2015,2,28, 14,0,0)
+ uid = self.send_itip_invitation(self.bill['mail'], start)
+
+ response = self.check_message_received(self.itip_reply_subject % { 'summary':'test', 'status':participant_status_label('DECLINED') }, self.bill['mail'])
+ self.assertIsInstance(response, email.message.Message)
+
+ # send invitation from lucy => SAVE
+ start = datetime.datetime(2015,3,11, 10,0,0)
+ templ = itip_invitation.replace("Doe, John", self.lucy['displayname'])
+ uid = self.send_itip_invitation(self.bill['mail'], start, template=templ, from_addr=self.lucy['mail'])
+
+ event = self.check_user_calendar_event(self.bill['kolabcalendarfolder'], uid)
+ self.assertIsInstance(event, pykolab.xml.Event)
+
def test_020_task_assignment_accept(self):
start = datetime.datetime(2014,9,10, 19,0,0)
diff --git a/tests/unit/test-012-wallace_invitationpolicy.py b/tests/unit/test-012-wallace_invitationpolicy.py
index f51b93e..b612a52 100644
--- a/tests/unit/test-012-wallace_invitationpolicy.py
+++ b/tests/unit/test-012-wallace_invitationpolicy.py
@@ -130,8 +130,9 @@ class TestWallaceInvitationpolicy(unittest.TestCase):
self.assertEqual(MIP.get_matching_invitation_policies(user, 'c at gmail.com', MIP.COND_TYPE_EVENT), [MIP.ACT_REJECT, MIP.ACT_MANUAL])
self.assertEqual(MIP.get_matching_invitation_policies(user, 'd at somedomain.net', MIP.COND_TYPE_TASK), [MIP.ACT_REJECT, MIP.ACT_MANUAL])
- user = { 'kolabinvitationpolicy': ['ACT_ACCEPT:example.org', 'ACT_MANUAL:others'] }
- self.assertEqual(MIP.get_matching_invitation_policies(user, 'd at somedomain.net', MIP.COND_TYPE_ALL), [MIP.ACT_MANUAL])
+ user = { 'kolabinvitationpolicy': ['ALL_SAVE_TO_FOLDER:maya.foo at example.org', 'ACT_REJECT:others'] }
+ self.assertEqual(MIP.get_matching_invitation_policies(user, 'maya.foo at example.org', MIP.COND_TYPE_ALL), [MIP.ACT_SAVE_TO_FOLDER])
+ self.assertEqual(MIP.get_matching_invitation_policies(user, 'd at somedomain.net', MIP.COND_TYPE_ALL), [MIP.ACT_MANUAL])
def test_004_write_locks(self):
user = { 'cn': 'John Doe', 'mail': "doe at example.org" }
More information about the commits
mailing list