<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[14215] CalendarServer/trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.calendarserver.org//changeset/14215">14215</a></dd>
<dt>Author</dt> <dd>cdaboo@apple.com</dd>
<dt>Date</dt> <dd>2014-12-10 14:33:11 -0800 (Wed, 10 Dec 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Fix for use with latest Twisted.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#CalendarServertrunkproject">CalendarServer/trunk/.project</a></li>
<li><a href="#CalendarServertrunkcalendarservertoolsshelltesttest_cmdpy">CalendarServer/trunk/calendarserver/tools/shell/test/test_cmd.py</a></li>
<li><a href="#CalendarServertrunkcontribperformanceloadtesttest_icalpy">CalendarServer/trunk/contrib/performance/loadtest/test_ical.py</a></li>
<li><a href="#CalendarServertrunkrequirementsstabletxt">CalendarServer/trunk/requirements-stable.txt</a></li>
<li><a href="#CalendarServertrunksetuppy">CalendarServer/trunk/setup.py</a></li>
<li><a href="#CalendarServertrunktwistedcaldavscheduling_storecaldavtesttest_resourcepy">CalendarServer/trunk/twistedcaldav/scheduling_store/caldav/test/test_resource.py</a></li>
<li><a href="#CalendarServertrunktwistedcaldavtesttest_databasepy">CalendarServer/trunk/twistedcaldav/test/test_database.py</a></li>
<li><a href="#CalendarServertrunktwistedcaldavtesttest_upgradepy">CalendarServer/trunk/twistedcaldav/test/test_upgrade.py</a></li>
<li><a href="#CalendarServertrunktxdavcaldavdatastoreschedulingimipinboundpy">CalendarServer/trunk/txdav/caldav/datastore/scheduling/imip/inbound.py</a></li>
<li><a href="#CalendarServertrunktxdavcaldavdatastoreschedulingimiptesttest_inboundpy">CalendarServer/trunk/txdav/caldav/datastore/scheduling/imip/test/test_inbound.py</a></li>
<li><a href="#CalendarServertrunktxdavcaldavdatastoreschedulingischeduledkimpy">CalendarServer/trunk/txdav/caldav/datastore/scheduling/ischedule/dkim.py</a></li>
<li><a href="#CalendarServertrunktxdavcaldavdatastoreschedulingischeduletesttest_dkimpy">CalendarServer/trunk/txdav/caldav/datastore/scheduling/ischedule/test/test_dkim.py</a></li>
<li><a href="#CalendarServertrunktxdavcaldavdatastoretestcommonpy">CalendarServer/trunk/txdav/caldav/datastore/test/common.py</a></li>
<li><a href="#CalendarServertrunktxdavcaldavdatastoretesttest_sqlpy">CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py</a></li>
<li><a href="#CalendarServertrunktxdavcarddavdatastoretesttest_filepy">CalendarServer/trunk/txdav/carddav/datastore/test/test_file.py</a></li>
<li><a href="#CalendarServertrunktxdavcarddavdatastoretesttest_sqlpy">CalendarServer/trunk/txdav/carddav/datastore/test/test_sql.py</a></li>
<li><a href="#CalendarServertrunktxdavcommondatastorepoddingtesttest_conduitpy">CalendarServer/trunk/txdav/common/datastore/podding/test/test_conduit.py</a></li>
<li><a href="#CalendarServertrunktxdavcommondatastoretestaccountsaccountsxml">CalendarServer/trunk/txdav/common/datastore/test/accounts/accounts.xml</a></li>
<li><a href="#CalendarServertrunktxdavcommondatastoreworktesttest_revision_cleanuppy">CalendarServer/trunk/txdav/common/datastore/work/test/test_revision_cleanup.py</a></li>
<li><a href="#CalendarServertrunktxdavdpstesttest_clientpy">CalendarServer/trunk/txdav/dps/test/test_client.py</a></li>
<li><a href="#CalendarServertrunktxdavwhocachepy">CalendarServer/trunk/txdav/who/cache.py</a></li>
<li><a href="#CalendarServertrunktxdavwhotesttest_cachepy">CalendarServer/trunk/txdav/who/test/test_cache.py</a></li>
<li><a href="#CalendarServertrunktxdavwhotesttest_groupspy">CalendarServer/trunk/txdav/who/test/test_groups.py</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#CalendarServertrunktxdavcaldavdatastoretestcalendar_storehomehome1calendar_15ics">CalendarServer/trunk/txdav/caldav/datastore/test/calendar_store/ho/me/home1/calendar_1/5.ics</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="CalendarServertrunkproject"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/.project (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/.project        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/.project        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -11,7 +11,9 @@
</span><span class="cx">                 <project>pycparser</project>
</span><span class="cx">                 <project>pycrypto</project>
</span><span class="cx">                 <project>PyGreSQL</project>
</span><ins>+                <project>pyOpenSSL</project>
</ins><span class="cx">                 <project>python-ldap</project>
</span><ins>+                <project>service_identity</project>
</ins><span class="cx">                 <project>sqlparse</project>
</span><span class="cx">                 <project>twextpy</project>
</span><span class="cx">                 <project>Twisted</project>
</span></span></pre></div>
<a id="CalendarServertrunkcalendarservertoolsshelltesttest_cmdpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/calendarserver/tools/shell/test/test_cmd.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/calendarserver/tools/shell/test/test_cmd.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/calendarserver/tools/shell/test/test_cmd.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> def test_getTargetMissing(self):
</span><del>- self.assertFailure(self.commands.getTarget(["/foo"]), NotFoundError)
</del><ins>+ return self.assertFailure(self.commands.getTarget(["/foo"]), NotFoundError)
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> @inlineCallbacks
</span></span></pre></div>
<a id="CalendarServertrunkcontribperformanceloadtesttest_icalpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/contrib/performance/loadtest/test_ical.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/contrib/performance/loadtest/test_ical.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/contrib/performance/loadtest/test_ical.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -1279,6 +1279,7 @@
</span><span class="cx"> self.assertEqual({}, self.client.xmpp)
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_changeEventAttendee(self):
</span><span class="cx"> """
</span><span class="cx"> OS_X_10_6.changeEventAttendee removes one attendee from an
</span><span class="lines">@@ -1291,7 +1292,7 @@
</span><span class="cx"> old = attendees[0]
</span><span class="cx"> new = old.duplicate()
</span><span class="cx"> new.setParameter('CN', 'Some Other Guy')
</span><del>- event = Event(None, u'/some/calendar/1234.ics', None, vevent)
</del><ins>+ event = Event(self.client.serializeLocation(), u'/some/calendar/1234.ics', None, vevent)
</ins><span class="cx"> self.client._events[event.url] = event
</span><span class="cx"> self.client.changeEventAttendee(event.url, old, new)
</span><span class="cx">
</span></span></pre></div>
<a id="CalendarServertrunkrequirementsstabletxt"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/requirements-stable.txt (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/requirements-stable.txt        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/requirements-stable.txt        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -5,16 +5,18 @@
</span><span class="cx"> # For CalendarServer development, don't try to get these projects from PyPI; use svn.
</span><span class="cx">
</span><span class="cx"> -e .
</span><del>--e svn+http://svn.calendarserver.org/repository/calendarserver/twext/trunk@14208#egg=twextpy
</del><ins>+-e svn+http://svn.calendarserver.org/repository/calendarserver/twext/trunk@14214#egg=twextpy
</ins><span class="cx"> -e svn+http://svn.calendarserver.org/repository/calendarserver/PyKerberos/trunk@13420#egg=kerberos
</span><span class="cx"> -e svn+http://svn.calendarserver.org/repository/calendarserver/PyCalendar/trunk@14025#egg=pycalendar
</span><span class="cx">
</span><span class="cx"> # Specify specific versions of our dependencies so that we're all testing the same config.
</span><span class="cx">
</span><span class="cx"> cffi==0.8.6
</span><ins>+characteristic==14.0.0
</ins><span class="cx"> funcparserlib==0.3.6
</span><span class="cx"> psutil==2.1.3
</span><span class="cx"> pyasn1==0.1.7
</span><ins>+pyasn1_modules==0.0.5
</ins><span class="cx"> pycparser==2.10
</span><span class="cx"> pycrypto==2.6.1
</span><span class="cx"> PyGreSQL==4.1.1
</span><span class="lines">@@ -25,6 +27,7 @@
</span><span class="cx"> python-dateutil==1.5 # Note: v2.0+ is for Python 3
</span><span class="cx"> python-ldap==2.4.18
</span><span class="cx"> pytz==2014.10
</span><ins>+service_identity==14.0.0
</ins><span class="cx"> setproctitle==1.1.8
</span><span class="cx"> sqlparse==0.1.14
</span><span class="cx"> Twisted==14.0.2
</span></span></pre></div>
<a id="CalendarServertrunksetuppy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/setup.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/setup.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/setup.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -239,6 +239,8 @@
</span><span class="cx"> "service_identity",
</span><span class="cx"> "pycrypto",
</span><span class="cx"> "pyasn1",
</span><ins>+ "pyasn1_modules",
+ "characteristic",
</ins><span class="cx"> "kerberos",
</span><span class="cx">
</span><span class="cx"> # Data store
</span></span></pre></div>
<a id="CalendarServertrunktwistedcaldavscheduling_storecaldavtesttest_resourcepy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/twistedcaldav/scheduling_store/caldav/test/test_resource.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/twistedcaldav/scheduling_store/caldav/test/test_resource.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/twistedcaldav/scheduling_store/caldav/test/test_resource.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> newfbset.add("/calendar-broken")
</span><span class="cx"> newset = caldavxml.CalendarFreeBusySet(*[davxml.HRef(url) for url in newfbset])
</span><span class="cx">
</span><del>- self.failUnlessFailure(inbox.writeProperty(newset, request), HTTPError)
</del><ins>+ yield self.failUnlessFailure(inbox.writeProperty(newset, request), HTTPError)
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx">
</span></span></pre></div>
<a id="CalendarServertrunktwistedcaldavtesttest_databasepy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/twistedcaldav/test/test_database.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/twistedcaldav/test/test_database.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/twistedcaldav/test/test_database.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -191,6 +191,7 @@
</span><span class="cx"> self.assertEqual(items, ())
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_version_upgrade_persistent(self):
</span><span class="cx"> """
</span><span class="cx"> Connect to database and create table
</span><span class="lines">@@ -198,9 +199,9 @@
</span><span class="cx"> db_file = self.mktemp()
</span><span class="cx"> db = Database.TestDB(db_file, persistent=True)
</span><span class="cx"> yield db.open()
</span><del>- yield db.execute("INSERT into TESTTYPE (KEY, VALUE) values (:1, :2)", "FOO", "BAR")
</del><ins>+ yield db.execute("INSERT into TESTTYPE (KEY, VALUE) values (:1, :2)", ("FOO", "BAR",))
</ins><span class="cx"> items = (yield db.query("SELECT * from TESTTYPE"))
</span><del>- self.assertEqual(items, (("FOO", "BAR")))
</del><ins>+ self.assertEqual(items, (("FOO", "BAR"),))
</ins><span class="cx"> db.close()
</span><span class="cx"> db = None
</span><span class="cx">
</span><span class="lines">@@ -210,26 +211,27 @@
</span><span class="cx"> db.close()
</span><span class="cx"> db = None
</span><span class="cx">
</span><del>- db = Database.TestDB(db_file, persistent=True, autocommit=True)
</del><ins>+ db = Database.TestDB(db_file, persistent=True)
</ins><span class="cx"> yield db.open()
</span><span class="cx"> items = (yield db.query("SELECT * from TESTTYPE"))
</span><del>- self.assertEqual(items, (("FOO", "BAR")))
</del><ins>+ self.assertEqual(items, (("FOO", "BAR"),))
</ins><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_version_upgrade_persistent_add_index(self):
</span><span class="cx"> """
</span><span class="cx"> Connect to database and create table
</span><span class="cx"> """
</span><span class="cx"> db_file = self.mktemp()
</span><del>- db = Database.TestDB(db_file, persistent=True, autocommit=True)
</del><ins>+ db = Database.TestDB(db_file, persistent=True)
</ins><span class="cx"> yield db.open()
</span><del>- yield db.execute("INSERT into TESTTYPE (KEY, VALUE) values (:1, :2)", "FOO", "BAR")
</del><ins>+ yield db.execute("INSERT into TESTTYPE (KEY, VALUE) values (:1, :2)", ("FOO", "BAR",))
</ins><span class="cx"> items = (yield db.query("SELECT * from TESTTYPE"))
</span><del>- self.assertEqual(items, (("FOO", "BAR")))
</del><ins>+ self.assertEqual(items, (("FOO", "BAR"),))
</ins><span class="cx"> db.close()
</span><span class="cx"> db = None
</span><span class="cx">
</span><del>- db = Database.TestDBCreateIndexOnUpgrade(db_file, persistent=True, autocommit=True)
</del><ins>+ db = Database.TestDBCreateIndexOnUpgrade(db_file, persistent=True)
</ins><span class="cx"> yield db.open()
</span><span class="cx"> items = (yield db.query("SELECT * from TESTTYPE"))
</span><del>- self.assertEqual(items, (("FOO", "BAR")))
</del><ins>+ self.assertEqual(items, (("FOO", "BAR"),))
</ins></span></pre></div>
<a id="CalendarServertrunktwistedcaldavtesttest_upgradepy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/twistedcaldav/test/test_upgrade.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/twistedcaldav/test/test_upgrade.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/twistedcaldav/test/test_upgrade.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -180,6 +180,7 @@
</span><span class="cx"> self.assertTrue(os.path.exists(os.path.join(config.DataRoot, NEWPROXYFILE)))
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_freeBusyUpgrade(self):
</span><span class="cx"> """
</span><span class="cx"> Test the updating of calendar-free-busy-set xattrs on inboxes
</span></span></pre></div>
<a id="CalendarServertrunktxdavcaldavdatastoreschedulingimipinboundpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/caldav/datastore/scheduling/imip/inbound.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/caldav/datastore/scheduling/imip/inbound.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/caldav/datastore/scheduling/imip/inbound.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -367,7 +367,7 @@
</span><span class="cx"> del msg["To"]
</span><span class="cx"> msg["To"] = toAddr
</span><span class="cx"> log.warn("Mail gateway forwarding reply back to organizer")
</span><del>- yield smtpSender.sendMessage(fromAddr, toAddr, messageid(), msg)
</del><ins>+ yield smtpSender.sendMessage(fromAddr, toAddr, messageid(), msg.as_string())
</ins><span class="cx"> returnValue(self.REPLY_FORWARDED_TO_ORGANIZER)
</span><span class="cx">
</span><span class="cx"> # Process the imip attachment; inject to calendar server
</span></span></pre></div>
<a id="CalendarServertrunktxdavcaldavdatastoreschedulingimiptesttest_inboundpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/caldav/datastore/scheduling/imip/test/test_inbound.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/caldav/datastore/scheduling/imip/test/test_inbound.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/caldav/datastore/scheduling/imip/test/test_inbound.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> from txdav.caldav.datastore.scheduling.imip.inbound import injectMessage
</span><span class="cx"> from txdav.caldav.datastore.scheduling.imip.inbound import shouldDeleteAllMail
</span><span class="cx"> from txdav.caldav.datastore.scheduling.imip.inbound import IMAP4DownloadProtocol
</span><del>-from txdav.caldav.datastore.scheduling.itip import iTIPRequestStatus
</del><span class="cx"> from txdav.common.datastore.test.util import CommonCommonTests
</span><span class="cx">
</span><span class="cx"> from twext.enterprise.jobqueue import JobItem
</span><span class="lines">@@ -177,7 +176,7 @@
</span><span class="cx"> # Make sure a known token *is* processed
</span><span class="cx"> txn = self.store.newTransaction()
</span><span class="cx"> token = (yield txn.imipCreateToken(
</span><del>- "urn:uuid:5A985493-EE2C-4665-94CF-4DFEA3A89500",
</del><ins>+ "urn:x-uid:5A985493-EE2C-4665-94CF-4DFEA3A89500",
</ins><span class="cx"> "mailto:user02@example.com",
</span><span class="cx"> "1E71F9C8-AEDA-48EB-98D0-76E898F6BB5C"
</span><span class="cx"> ))
</span><span class="lines">@@ -200,7 +199,7 @@
</span><span class="cx"> # Make sure a known token *is* processed
</span><span class="cx"> txn = self.store.newTransaction()
</span><span class="cx"> yield txn.imipCreateToken(
</span><del>- "urn:uuid:5A985493-EE2C-4665-94CF-4DFEA3A89500",
</del><ins>+ "urn:x-uid:5A985493-EE2C-4665-94CF-4DFEA3A89500",
</ins><span class="cx"> "mailto:xyzzy@example.com",
</span><span class="cx"> "1E71F9C8-AEDA-48EB-98D0-76E898F6BB5C",
</span><span class="cx"> token="d7cdf68d-8b73-4df1-ad3b-f08002fb285f"
</span><span class="lines">@@ -213,13 +212,14 @@
</span><span class="cx"> yield JobItem.waitEmpty(self.store.newTransaction, reactor, 60)
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_processReplyMissingOrganizer(self):
</span><span class="cx"> msg = email.message_from_string(self.dataFile('reply_missing_organizer'))
</span><span class="cx">
</span><span class="cx"> # stick the token in the database first
</span><span class="cx"> txn = self.store.newTransaction()
</span><span class="cx"> yield txn.imipCreateToken(
</span><del>- "urn:uuid:5A985493-EE2C-4665-94CF-4DFEA3A89500",
</del><ins>+ "urn:x-uid:5A985493-EE2C-4665-94CF-4DFEA3A89500",
</ins><span class="cx"> "mailto:xyzzy@example.com",
</span><span class="cx"> "1E71F9C8-AEDA-48EB-98D0-76E898F6BB5C",
</span><span class="cx"> token="d7cdf68d-8b73-4df1-ad3b-f08002fb285f"
</span><span class="lines">@@ -227,19 +227,18 @@
</span><span class="cx"> yield txn.commit()
</span><span class="cx">
</span><span class="cx"> result = (yield self.receiver.processReply(msg))
</span><del>- organizer, _ignore_attendee, calendar = result
- organizerProp = calendar.mainComponent().getOrganizerProperty()
- self.assertTrue(organizerProp is not None)
- self.assertEquals(organizer,
- "urn:uuid:5A985493-EE2C-4665-94CF-4DFEA3A89500")
</del><ins>+ self.assertEquals(result, MailReceiver.INJECTION_SUBMITTED)
</ins><span class="cx">
</span><ins>+ yield JobItem.waitEmpty(self.store.newTransaction, reactor, 60)
</ins><span class="cx">
</span><ins>+
+ @inlineCallbacks
</ins><span class="cx"> def test_processReplyMissingAttendee(self):
</span><span class="cx"> msg = email.message_from_string(self.dataFile('reply_missing_attendee'))
</span><span class="cx">
</span><span class="cx"> txn = self.store.newTransaction()
</span><span class="cx"> yield txn.imipCreateToken(
</span><del>- "urn:uuid:5A985493-EE2C-4665-94CF-4DFEA3A89500",
</del><ins>+ "urn:x-uid:5A985493-EE2C-4665-94CF-4DFEA3A89500",
</ins><span class="cx"> "mailto:xyzzy@example.com",
</span><span class="cx"> "1E71F9C8-AEDA-48EB-98D0-76E898F6BB5C",
</span><span class="cx"> token="d7cdf68d-8b73-4df1-ad3b-f08002fb285f"
</span><span class="lines">@@ -247,16 +246,12 @@
</span><span class="cx"> yield txn.commit()
</span><span class="cx">
</span><span class="cx"> result = (yield self.receiver.processReply(msg))
</span><del>- _ignore_organizer, attendee, calendar = result
</del><ins>+ self.assertEquals(result, MailReceiver.INJECTION_SUBMITTED)
</ins><span class="cx">
</span><del>- # Since the expected attendee was missing, the reply processor should
- # have added an attendee back in with a "5.1;Service unavailable"
- # schedule-status
- attendeeProp = calendar.mainComponent().getAttendeeProperty([attendee])
- self.assertEquals(attendeeProp.parameterValue("SCHEDULE-STATUS"),
- iTIPRequestStatus.SERVICE_UNAVAILABLE)
</del><ins>+ yield JobItem.waitEmpty(self.store.newTransaction, reactor, 60)
</ins><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_processReplyMissingAttachment(self):
</span><span class="cx">
</span><span class="cx"> msg = email.message_from_string(
</span><span class="lines">@@ -266,7 +261,7 @@
</span><span class="cx"> # stick the token in the database first
</span><span class="cx"> txn = self.store.newTransaction()
</span><span class="cx"> yield txn.imipCreateToken(
</span><del>- "urn:uuid:5A985493-EE2C-4665-94CF-4DFEA3A89500",
</del><ins>+ "urn:x-uid:5A985493-EE2C-4665-94CF-4DFEA3A89500",
</ins><span class="cx"> "mailto:xyzzy@example.com",
</span><span class="cx"> "1E71F9C8-AEDA-48EB-98D0-76E898F6BB5C",
</span><span class="cx"> token="d7cdf68d-8b73-4df1-ad3b-f08002fb285f"
</span><span class="lines">@@ -276,7 +271,9 @@
</span><span class="cx"> result = (yield self.receiver.processReply(msg))
</span><span class="cx"> self.assertEquals(result, MailReceiver.REPLY_FORWARDED_TO_ORGANIZER)
</span><span class="cx">
</span><ins>+ yield JobItem.waitEmpty(self.store.newTransaction, reactor, 60)
</ins><span class="cx">
</span><ins>+
</ins><span class="cx"> @inlineCallbacks
</span><span class="cx"> def test_injectMessage(self):
</span><span class="cx">
</span></span></pre></div>
<a id="CalendarServertrunktxdavcaldavdatastoreschedulingischeduledkimpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/caldav/datastore/scheduling/ischedule/dkim.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/caldav/datastore/scheduling/ischedule/dkim.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/caldav/datastore/scheduling/ischedule/dkim.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -812,7 +812,8 @@
</span><span class="cx"> return None
</span><span class="cx">
</span><span class="cx">
</span><del>- def flushCache(self):
</del><ins>+ @staticmethod
+ def flushCache():
</ins><span class="cx"> PublicKeyLookup.keyCache = {}
</span><span class="cx">
</span><span class="cx">
</span></span></pre></div>
<a id="CalendarServertrunktxdavcaldavdatastoreschedulingischeduletesttest_dkimpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/caldav/datastore/scheduling/ischedule/test/test_dkim.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/caldav/datastore/scheduling/ischedule/test/test_dkim.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/caldav/datastore/scheduling/ischedule/test/test_dkim.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -389,6 +389,7 @@
</span><span class="cx"> self.assertEqual(extracted, result.replace("\n", "\r\n"))
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_locate_public_key(self):
</span><span class="cx"> """
</span><span class="cx"> L{DKIMVerifier.locatePublicKey} correctly finds key matching headers.
</span><span class="lines">@@ -439,13 +440,14 @@
</span><span class="cx"> for hdrs, keys, result in data:
</span><span class="cx"> headers = [hdr.split(":", 1) for hdr in hdrs.splitlines()]
</span><span class="cx"> TestPublicKeyLookup.PublicKeyLookup_Testing.keys = keys
</span><ins>+ TestPublicKeyLookup.PublicKeyLookup_Testing.flushCache()
</ins><span class="cx"> verifier = DKIMVerifier(self._makeHeaders(headers), "", key_lookup=(TestPublicKeyLookup.PublicKeyLookup_Testing,))
</span><span class="cx"> verifier.processDKIMHeader()
</span><span class="cx"> pkey = (yield verifier.locatePublicKey())
</span><span class="cx"> if result:
</span><del>- self.assertNotEqual(pkey, None)
</del><ins>+ self.assertTrue(pkey is not None)
</ins><span class="cx"> else:
</span><del>- self.assertEqual(pkey, None)
</del><ins>+ self.assertTrue(pkey is None)
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> @inlineCallbacks
</span><span class="lines">@@ -473,7 +475,7 @@
</span><span class="cx"> TestPublicKeyLookup.PublicKeyLookup_Testing.keys = keys
</span><span class="cx"> data = (yield allDataFromStream(request.stream))
</span><span class="cx"> verifier = DKIMVerifier(request.headers, data, key_lookup=(TestPublicKeyLookup.PublicKeyLookup_Testing,))
</span><del>- TestPublicKeyLookup.PublicKeyLookup_Testing({}).flushCache()
</del><ins>+ TestPublicKeyLookup.PublicKeyLookup_Testing.flushCache()
</ins><span class="cx"> try:
</span><span class="cx"> yield verifier.verify()
</span><span class="cx"> except Exception, e:
</span></span></pre></div>
<a id="CalendarServertrunktxdavcaldavdatastoretestcalendar_storehomehome1calendar_15ics"></a>
<div class="addfile"><h4>Added: CalendarServer/trunk/txdav/caldav/datastore/test/calendar_store/ho/me/home1/calendar_1/5.ics (0 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/caldav/datastore/test/calendar_store/ho/me/home1/calendar_1/5.ics         (rev 0)
+++ CalendarServer/trunk/txdav/caldav/datastore/test/calendar_store/ho/me/home1/calendar_1/5.ics        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.1//EN
+CALSCALE:GREGORIAN
+BEGIN:VTIMEZONE
+TZID:US/Pacific
+BEGIN:DAYLIGHT
+TZOFFSETFROM:-0800
+RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
+DTSTART:20070311T020000
+TZNAME:PDT
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:-0700
+RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
+DTSTART:20071104T020000
+TZNAME:PST
+TZOFFSETTO:-0800
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTEND;TZID=US/Pacific:%(now)s0324T124500
+TRANSP:OPAQUE
+UID:uid5
+DTSTAMP:20090326T145447Z
+LOCATION:Wilfredo's Office
+ORGANIZER:mailto:wsanchez@example.com
+SEQUENCE:2
+X-APPLE-EWS-BUSYSTATUS:BUSY
+X-APPLE-DROPBOX:/calendars/__uids__/user01/dropbox/FE5CDC6F-7776-4607-83
+ A9-B90FF7ACC8D0.dropbox
+SUMMARY:CalDAV protocol updates
+DTSTART;TZID=US/Pacific:%(now)s0324T121500
+CREATED:20090326T145440Z
+BEGIN:VALARM
+X-WR-ALARMUID:DB39AB67-449C-441C-89D2-D740B5F41A73
+TRIGGER;VALUE=DATE-TIME:%(now)s0324T180009Z
+ACTION:AUDIO
+END:VALARM
+END:VEVENT
+END:VCALENDAR
</ins></span></pre></div>
<a id="CalendarServertrunktxdavcaldavdatastoretestcommonpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/caldav/datastore/test/common.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/caldav/datastore/test/common.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/caldav/datastore/test/common.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -76,6 +76,7 @@
</span><span class="cx"> "2.ics",
</span><span class="cx"> "3.ics",
</span><span class="cx"> "4.ics",
</span><ins>+ "5.ics",
</ins><span class="cx"> ]
</span><span class="cx">
</span><span class="cx"> home1_calendarNames = [
</span><span class="lines">@@ -240,6 +241,7 @@
</span><span class="cx"> metadata2 = cls.metadata2.copy()
</span><span class="cx"> metadata3 = cls.metadata3.copy()
</span><span class="cx"> metadata4 = cls.metadata4.copy()
</span><ins>+ metadata5 = cls.metadata5.copy()
</ins><span class="cx"> return {
</span><span class="cx"> "home1": {
</span><span class="cx"> "calendar_1": {
</span><span class="lines">@@ -247,6 +249,7 @@
</span><span class="cx"> "2.ics": (cal1Root.child("2.ics").getContent(), metadata2),
</span><span class="cx"> "3.ics": (cal1Root.child("3.ics").getContent(), metadata3),
</span><span class="cx"> "4.ics": (cal1Root.child("4.ics").getContent(), metadata4),
</span><ins>+ "5.ics": (cal1Root.child("5.ics").getContent(), metadata5),
</ins><span class="cx"> },
</span><span class="cx"> "calendar_2": {},
</span><span class="cx"> "calendar_empty": {},
</span><span class="lines">@@ -1233,14 +1236,18 @@
</span><span class="cx"> )
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_organizer(self):
</span><span class="cx"> """
</span><span class="cx"> L{ICalendarObject.organizer} returns a C{str} describing the calendar
</span><span class="cx"> user address of the C{ORGANIZER} property of the calendar object's
</span><span class="cx"> component.
</span><span class="cx"> """
</span><ins>+
+ calobj = yield self.calendarObjectUnderTest(name="5.ics")
+ organizer = yield calobj.organizer()
</ins><span class="cx"> self.assertEquals(
</span><del>- (yield self.calendarObjectUnderTest()).organizer(),
</del><ins>+ organizer,
</ins><span class="cx"> "mailto:wsanchez@example.com"
</span><span class="cx"> )
</span><span class="cx">
</span></span></pre></div>
<a id="CalendarServertrunktxdavcaldavdatastoretesttest_sqlpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -534,25 +534,26 @@
</span><span class="cx"> self.assertEqual(supported_components, set(ical.allowedStoreComponents))
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_calendarHomeVersion(self):
</span><span class="cx"> """
</span><span class="cx"> The DATAVERSION column for new calendar homes must match the
</span><span class="cx"> CALENDAR-DATAVERSION value.
</span><span class="cx"> """
</span><span class="cx">
</span><del>- home = yield self.transactionUnderTest().calendarHomeWithUID("home_version")
</del><ins>+ home = yield self.transactionUnderTest().calendarHomeWithUID("home_version", create=True)
</ins><span class="cx"> self.assertTrue(home is not None)
</span><span class="cx"> yield self.transactionUnderTest().commit
</span><span class="cx">
</span><span class="cx"> txn = yield self.transactionUnderTest()
</span><del>- version = yield txn.calendarserverValue("CALENDAR-DATAVERSION")[0][0]
</del><ins>+ version = yield txn.calendarserverValue("CALENDAR-DATAVERSION")
</ins><span class="cx"> ch = schema.CALENDAR_HOME
</span><del>- homeVersion = yield Select(
</del><ins>+ homeVersion = (yield Select(
</ins><span class="cx"> [ch.DATAVERSION, ],
</span><span class="cx"> From=ch,
</span><span class="cx"> Where=ch.OWNER_UID == "home_version",
</span><del>- ).on(txn)[0][0]
- self.assertEqual(int(homeVersion, version))
</del><ins>+ ).on(txn))[0][0]
+ self.assertEqual(int(homeVersion), int(version))
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> @inlineCallbacks
</span></span></pre></div>
<a id="CalendarServertrunktxdavcarddavdatastoretesttest_filepy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/carddav/datastore/test/test_file.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/carddav/datastore/test/test_file.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/carddav/datastore/test/test_file.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -355,20 +355,21 @@
</span><span class="cx"> )
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_modifyAddressBookObjectCaches(self):
</span><span class="cx"> """
</span><span class="cx"> Modifying a addressbook object should cache the modified component in
</span><span class="cx"> memory, to avoid unnecessary parsing round-trips.
</span><span class="cx"> """
</span><span class="cx"> modifiedComponent = VComponent.fromString(vcard1modified_text)
</span><del>- (yield self.addressbook1.addressbookObjectWithName("1.vcf")).setComponent(
- modifiedComponent
</del><ins>+ obj = yield self.addressbook1.addressbookObjectWithName("1.vcf")
+ yield obj.setComponent(modifiedComponent)
+ comp = yield obj.component()
+ self.assertEqual(
+ str(modifiedComponent),
+ str(comp)
</ins><span class="cx"> )
</span><del>- self.assertIdentical(
- modifiedComponent,
- (yield self.addressbook1.addressbookObjectWithName("1.vcf")).component()
- )
- self.txn.commit()
</del><ins>+ yield self.txn.commit()
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> @testUnimplemented
</span></span></pre></div>
<a id="CalendarServertrunktxdavcarddavdatastoretesttest_sqlpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/carddav/datastore/test/test_sql.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/carddav/datastore/test/test_sql.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/carddav/datastore/test/test_sql.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -204,25 +204,26 @@
</span><span class="cx"> self.assertPropertiesSimilar(fromHome, toHome,)
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_addressBookHomeVersion(self):
</span><span class="cx"> """
</span><span class="cx"> The DATAVERSION column for new addressbook homes must match the
</span><span class="cx"> ADDRESSBOOK-DATAVERSION value.
</span><span class="cx"> """
</span><span class="cx">
</span><del>- home = yield self.transactionUnderTest().addressbookHomeWithUID("home_version")
</del><ins>+ home = yield self.transactionUnderTest().addressbookHomeWithUID("home_version", create=True)
</ins><span class="cx"> self.assertTrue(home is not None)
</span><span class="cx"> yield self.transactionUnderTest().commit
</span><span class="cx">
</span><span class="cx"> txn = yield self.transactionUnderTest()
</span><del>- version = yield txn.calendarserverValue("ADDRESSBOOK-DATAVERSION")[0][0]
</del><ins>+ version = yield txn.calendarserverValue("ADDRESSBOOK-DATAVERSION")
</ins><span class="cx"> ch = schema.ADDRESSBOOK_HOME
</span><del>- homeVersion = yield Select(
</del><ins>+ homeVersion = (yield Select(
</ins><span class="cx"> [ch.DATAVERSION, ],
</span><span class="cx"> From=ch,
</span><span class="cx"> Where=ch.OWNER_UID == "home_version",
</span><del>- ).on(txn)[0][0]
- self.assertEqual(int(homeVersion, version))
</del><ins>+ ).on(txn))[0][0]
+ self.assertEqual(int(homeVersion), int(version))
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> @inlineCallbacks
</span></span></pre></div>
<a id="CalendarServertrunktxdavcommondatastorepoddingtesttest_conduitpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/common/datastore/podding/test/test_conduit.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/common/datastore/podding/test/test_conduit.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/common/datastore/podding/test/test_conduit.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -114,17 +114,17 @@
</span><span class="cx"> self.assertTrue(r1 is not None)
</span><span class="cx"> self.assertTrue(r2 is not None)
</span><span class="cx">
</span><del>- self.assertFailure(
</del><ins>+ yield self.assertFailure(
</ins><span class="cx"> conduit.validRequest("bogus01", "user02"),
</span><span class="cx"> DirectoryRecordNotFoundError
</span><span class="cx"> )
</span><span class="cx">
</span><del>- self.assertFailure(
</del><ins>+ yield self.assertFailure(
</ins><span class="cx"> conduit.validRequest("user01", "bogus02"),
</span><span class="cx"> DirectoryRecordNotFoundError
</span><span class="cx"> )
</span><span class="cx">
</span><del>- self.assertFailure(
</del><ins>+ yield self.assertFailure(
</ins><span class="cx"> conduit.validRequest("user01", "user02"),
</span><span class="cx"> FailedCrossPodRequestError
</span><span class="cx"> )
</span></span></pre></div>
<a id="CalendarServertrunktxdavcommondatastoretestaccountsaccountsxml"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/common/datastore/test/accounts/accounts.xml (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/common/datastore/test/accounts/accounts.xml        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/common/datastore/test/accounts/accounts.xml        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -165,6 +165,13 @@
</span><span class="cx"> <email>home_attachments@example.com</email>
</span><span class="cx"> </record>
</span><span class="cx"> <record type="user">
</span><ins>+ <uid>home_version</uid>
+ <short-name>home_version</short-name>
+ <password>home_version</password>
+ <full-name>Home Version</full-name>
+ <email>home_version@example.com</email>
+ </record>
+ <record type="user">
</ins><span class="cx"> <uid>xyzzy</uid>
</span><span class="cx"> <short-name>xyzzy</short-name>
</span><span class="cx"> <password>xyzzy</password>
</span></span></pre></div>
<a id="CalendarServertrunktxdavcommondatastoreworktesttest_revision_cleanuppy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/common/datastore/work/test/test_revision_cleanup.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/common/datastore/work/test/test_revision_cleanup.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/common/datastore/work/test/test_revision_cleanup.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -284,7 +284,7 @@
</span><span class="cx">
</span><span class="cx"> # old sync token fails
</span><span class="cx"> calendar = yield self.calendarUnderTest(home="user01", name="calendar")
</span><del>- self.failUnlessFailure(calendar.resourceNamesSinceToken(token), SyncTokenValidException)
</del><ins>+ yield self.failUnlessFailure(calendar.resourceNamesSinceToken(token), SyncTokenValidException)
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> @inlineCallbacks
</span><span class="lines">@@ -332,8 +332,8 @@
</span><span class="cx">
</span><span class="cx"> # old sync token fails
</span><span class="cx"> home = yield self.homeUnderTest(name="user01")
</span><del>- self.failUnlessFailure(home.resourceNamesSinceToken(token, "1"), SyncTokenValidException)
- self.failUnlessFailure(home.resourceNamesSinceToken(token, "infinity"), SyncTokenValidException)
</del><ins>+ yield self.failUnlessFailure(home.resourceNamesSinceToken(token, "1"), SyncTokenValidException)
+ yield self.failUnlessFailure(home.resourceNamesSinceToken(token, "infinity"), SyncTokenValidException)
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> @inlineCallbacks
</span><span class="lines">@@ -384,7 +384,7 @@
</span><span class="cx">
</span><span class="cx"> # old sync token fails
</span><span class="cx"> addressbook = yield self.addressbookUnderTest(home="user01", name="addressbook")
</span><del>- self.failUnlessFailure(addressbook.resourceNamesSinceToken(token), SyncTokenValidException)
</del><ins>+ yield self.failUnlessFailure(addressbook.resourceNamesSinceToken(token), SyncTokenValidException)
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> @inlineCallbacks
</span><span class="lines">@@ -470,4 +470,4 @@
</span><span class="cx">
</span><span class="cx"> # old sync token fails
</span><span class="cx"> addressbook = yield self.addressbookUnderTest(home="user01", name="addressbook")
</span><del>- self.failUnlessFailure(addressbook.resourceNamesSinceToken(token), SyncTokenValidException)
</del><ins>+ yield self.failUnlessFailure(addressbook.resourceNamesSinceToken(token), SyncTokenValidException)
</ins></span></pre></div>
<a id="CalendarServertrunktxdavdpstesttest_clientpy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/dps/test/test_client.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/dps/test/test_client.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/dps/test/test_client.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -125,6 +125,7 @@
</span><span class="cx"> self.assertEquals(record.uid, testUID)
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_guid(self):
</span><span class="cx"> if testMode == "od":
</span><span class="cx"> record = (yield self.directory.recordWithGUID(testUID))
</span><span class="lines">@@ -454,6 +455,7 @@
</span><span class="cx"> self.assertEquals(record.uid, self.wsanchezUID)
</span><span class="cx">
</span><span class="cx">
</span><ins>+ @inlineCallbacks
</ins><span class="cx"> def test_guid(self):
</span><span class="cx"> record = yield self.client.recordWithGUID(self.wsanchezUID)
</span><span class="cx"> self.assertTrue(u"wsanchez" in record.shortNames)
</span><span class="lines">@@ -464,7 +466,7 @@
</span><span class="cx"> records = (yield self.client.recordsWithRecordType(
</span><span class="cx"> RecordType.user
</span><span class="cx"> ))
</span><del>- self.assertEquals(len(records), 243)
</del><ins>+ self.assertEquals(len(records), 244)
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> @inlineCallbacks
</span></span></pre></div>
<a id="CalendarServertrunktxdavwhocachepy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/who/cache.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/who/cache.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/who/cache.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -87,7 +87,13 @@
</span><span class="cx"> self._expireSeconds = expireSeconds
</span><span class="cx"> self.resetCache()
</span><span class="cx">
</span><ins>+# from txdav.who.augment import AugmentedDirectoryService
+# if isinstance(self._directory, AugmentedDirectoryService):
+# for ds in self._directory._directory.services:
+# if hasattr(ds, "setMasterDirectory"):
+# ds.setMasterDirectory(self)
</ins><span class="cx">
</span><ins>+
</ins><span class="cx"> def _addTiming(self, key, duration):
</span><span class="cx"> if self._directoryTiming:
</span><span class="cx"> self._directory._addTiming(key, duration)
</span></span></pre></div>
<a id="CalendarServertrunktxdavwhotesttest_cachepy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/who/test/test_cache.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/who/test/test_cache.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/who/test/test_cache.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> self.assertTrue(CalRecordType.resource in dir.recordTypes())
</span><span class="cx">
</span><span class="cx"> records = yield dir.recordsWithRecordType(RecordType.user)
</span><del>- self.assertEquals(len(records), 243)
</del><ins>+ self.assertEquals(len(records), 244)
</ins><span class="cx">
</span><span class="cx"> record = yield dir.recordWithGUID(uuid.UUID("8166C681-2D08-4846-90F7-97023A6EDDC5"))
</span><span class="cx"> self.assertEquals(record.uid, u"cache-uid-1")
</span></span></pre></div>
<a id="CalendarServertrunktxdavwhotesttest_groupspy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/who/test/test_groups.py (14214 => 14215)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/who/test/test_groups.py        2014-12-10 22:30:11 UTC (rev 14214)
+++ CalendarServer/trunk/txdav/who/test/test_groups.py        2014-12-10 22:33:11 UTC (rev 14215)
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx"> txn = store.newTransaction()
</span><span class="cx">
</span><span class="cx"> # Non-existent groupID
</span><del>- self.failUnlessFailure(txn.groupByID(42), NotFoundError)
</del><ins>+ yield self.failUnlessFailure(txn.groupByID(42), NotFoundError)
</ins><span class="cx">
</span><span class="cx"> uid = u"__top_group_1__"
</span><span class="cx"> hash = "553eb54e3bbb26582198ee04541dbee4"
</span></span></pre>
</div>
</div>
</body>
</html>