sogo/Tests/Integration/test-contact-categories.py

64 lines
2.6 KiB
Python
Executable File

#!/usr/bin/python
import sogotests
import unittest
import webdavlib
from config import *
class HTTPContactCategoriesTest(unittest.TestCase):
def _setCategories(self, user, categories = None):
resource = '/SOGo/dav/%s/Contacts/' % user
if categories is None:
categories = []
elements = [ { "{urn:inverse:params:xml:ns:inverse-dav}category": x }
for x in categories ]
props = { "{urn:inverse:params:xml:ns:inverse-dav}contacts-categories": elements }
proppatch = webdavlib.WebDAVPROPPATCH(resource, props)
client = webdavlib.WebDAVClient(hostname, port, username, password)
client.execute(proppatch)
self.assertEquals(proppatch.response["status"], 207,
"failure (%s) setting '%s' categories on %s's contacts"
% (proppatch.response["status"],
"', '".join(categories), user))
def _getCategories(self, user):
resource = '/SOGo/dav/%s/Contacts/' % user
props = [ "{urn:inverse:params:xml:ns:inverse-dav}contacts-categories" ]
propfind = webdavlib.WebDAVPROPFIND(resource, props, "0")
client = webdavlib.WebDAVClient(hostname, port, username, password)
client.execute(propfind)
self.assertEquals(propfind.response["status"], 207,
"failure (%s) getting categories on %s's contacts"
% (propfind.response["status"], user))
categories = []
prop_nodes = propfind.response["document"].findall("{DAV:}response/{DAV:}propstat/{DAV:}prop/{urn:inverse:params:xml:ns:inverse-dav}contacts-categories")
for prop_node in prop_nodes:
cat_nodes = prop_node.findall("{urn:inverse:params:xml:ns:inverse-dav}category")
if cat_nodes is not None:
for cat_node in cat_nodes:
categories.append(cat_node.text)
return categories
def test(self):
self._setCategories(username, [])
cats = self._getCategories(username)
self.assertTrue(cats is not None and len(cats) == 0)
self._setCategories(username, [ "Coucou" ])
cats = self._getCategories(username)
self.assertTrue(cats is not None and len(cats) == 1)
self.assertEquals(cats[0], "Coucou")
self._setCategories(username, [ "Toto", "Cuicui" ])
cats = self._getCategories(username)
self.assertTrue(cats is not None and len(cats) == 2)
self.assertEquals(cats[0], "Toto")
self.assertEquals(cats[1], "Cuicui")
if __name__ == "__main__":
sogotests.runTests()