Revision: 15476 http://trac.calendarserver.org//changeset/15476 Author: sagen@apple.com Date: 2016-03-16 15:56:28 -0700 (Wed, 16 Mar 2016) Log Message: ----------- Ensure fake email addresses are unicode; since shortNames/emails are optional, make admin page ignore missing values Modified Paths: -------------- CalendarServer/trunk/calendarserver/webadmin/principals.py CalendarServer/trunk/txdav/who/directory.py CalendarServer/trunk/txdav/who/test/test_directory.py Modified: CalendarServer/trunk/calendarserver/webadmin/principals.py =================================================================== --- CalendarServer/trunk/calendarserver/webadmin/principals.py 2016-03-16 21:42:01 UTC (rev 15475) +++ CalendarServer/trunk/calendarserver/webadmin/principals.py 2016-03-16 22:56:28 UTC (rev 15476) @@ -352,9 +352,9 @@ u"uid": joinWithBR((record.uid,)), u"guid": joinWithBR((record.guid,)), u"recordType": joinWithBR((record.recordType,)), - u"shortNames": joinWithBR(record.shortNames), + u"shortNames": joinWithBR(record.shortNames) if hasattr(record, "shortNames") else "", u"fullNames": joinWithBR(record.fullNames), - u"emailAddresses": joinWithBR(record.emailAddresses), + u"emailAddresses": joinWithBR(record.emailAddresses) if hasattr(record, "emailAddresses") else "", u"calendarUserAddresses": joinWithBR(record.calendarUserAddresses), u"serverURI": joinWithBR((record.serverURI(),)), } Modified: CalendarServer/trunk/txdav/who/directory.py =================================================================== --- CalendarServer/trunk/txdav/who/directory.py 2016-03-16 21:42:01 UTC (rev 15475) +++ CalendarServer/trunk/txdav/who/directory.py 2016-03-16 22:56:28 UTC (rev 15476) @@ -348,7 +348,7 @@ def __init__(self): if config.Scheduling.Options.FakeResourceLocationEmail: if self.recordType in (DAVRecordType.location, DAVRecordType.resource) and not getattr(self, "emailAddresses", None): - self.fields[BaseFieldName.emailAddresses] = ("{}@do_not_reply".format(self.uid.encode("hex"),),) + self.fields[BaseFieldName.emailAddresses] = (u"{}@do_not_reply".format(self.uid.encode("hex"),),) @inlineCallbacks Modified: CalendarServer/trunk/txdav/who/test/test_directory.py =================================================================== --- CalendarServer/trunk/txdav/who/test/test_directory.py 2016-03-16 21:42:01 UTC (rev 15475) +++ CalendarServer/trunk/txdav/who/test/test_directory.py 2016-03-16 22:56:28 UTC (rev 15476) @@ -389,10 +389,15 @@ @inlineCallbacks def test_calendarUserAddress_fake_email(self): """ - Make sure that recordWs have fake email addresses. + Make sure that records have fake email addresses. """ record = yield self.directory.recordWithUID(u"resource01") self.assertTrue(record is not None) + + # Verify the fake email address is in fact unicode + for address in record.emailAddresses: + self.assertTrue(isinstance(address, unicode)) + self.assertIn(u"{}@do_not_reply".format("resource01".encode("hex")), record.emailAddresses) self.assertIn(u"mailto:{}@do_not_reply".format("resource01".encode("hex")), record.calendarUserAddresses)