[CalendarServer-changes] [3853] CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/ Twisted
source_changes at macosforge.org
source_changes at macosforge.org
Thu Mar 12 14:51:19 PDT 2009
Revision: 3853
http://trac.macosforge.org/projects/calendarserver/changeset/3853
Author: exarkun at twistedmatrix.com
Date: 2009-03-12 14:51:19 -0700 (Thu, 12 Mar 2009)
Log Message:
-----------
Make ACL, Quote, and util.TestCase friends again
Modified Paths:
--------------
CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.test_acl.patch
CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.test_quota.patch
CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.util.patch
Modified: CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.test_acl.patch
===================================================================
--- CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.test_acl.patch 2009-03-12 21:43:20 UTC (rev 3852)
+++ CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.test_acl.patch 2009-03-12 21:51:19 UTC (rev 3853)
@@ -1,6 +1,6 @@
Index: twisted/web2/dav/test/test_acl.py
===================================================================
---- twisted/web2/dav/test/test_acl.py (revision 26343)
+--- twisted/web2/dav/test/test_acl.py (revision 26346)
+++ twisted/web2/dav/test/test_acl.py (working copy)
@@ -30,6 +30,7 @@
from twisted.web2.auth import basic
@@ -10,7 +10,7 @@
from twisted.web2.dav.util import davXMLFromStream
from twisted.web2.dav.auth import TwistedPasswordProperty, IPrincipal, DavRealm, TwistedPropertyChecker, AuthenticationWrapper
from twisted.web2.dav.fileop import rmdir
-@@ -39,6 +40,25 @@
+@@ -39,74 +40,87 @@
from twisted.web2.dav.test.util import Site, serialize
from twisted.web2.dav.test.test_resource import TestResource, TestDAVPrincipalResource
@@ -36,57 +36,121 @@
class ACL(twisted.web2.dav.test.util.TestCase):
"""
RFC 3744 (WebDAV ACL) tests.
-@@ -47,8 +67,19 @@
- if not hasattr(self, "_docroot"):
- docroot = self.mktemp()
- os.mkdir(docroot)
+ """
+- def _getDocumentRoot(self):
+- if not hasattr(self, "_docroot"):
+- docroot = self.mktemp()
+- os.mkdir(docroot)
- rootresource = self.resource_class(docroot)
++ def createDocumentRoot(self):
++ docroot = self.mktemp()
++ os.mkdir(docroot)
-+ userResource = TestDAVPrincipalResource("/principals/users/user01")
-+ userResource.writeDeadProperty(TwistedPasswordProperty("user01"))
-+
-+ principalCollection = TestPrincipalsCollection(
-+ "/principals/",
-+ children={"users": TestPrincipalsCollection(
-+ "/principals/users/",
-+ children={"user01": userResource})})
-+
-+ rootResource = self.resource_class(
-+ docroot, principalCollections=(principalCollection,))
-+
- portal = Portal(DavRealm())
- portal.registerChecker(TwistedPropertyChecker())
+- portal = Portal(DavRealm())
+- portal.registerChecker(TwistedPropertyChecker())
++ userResource = TestDAVPrincipalResource("/principals/users/user01")
++ userResource.writeDeadProperty(TwistedPasswordProperty("user01"))
-@@ -57,26 +88,14 @@
- loginInterfaces = (IPrincipal,)
+- credentialFactories = (basic.BasicCredentialFactory(""),)
++ principalCollection = TestPrincipalsCollection(
++ "/principals/",
++ children={"users": TestPrincipalsCollection(
++ "/principals/users/",
++ children={"user01": userResource})})
- self.site = Site(AuthenticationWrapper(
+- loginInterfaces = (IPrincipal,)
++ rootResource = self.resource_class(
++ docroot, principalCollections=(principalCollection,))
+
+- self.site = Site(AuthenticationWrapper(
- rootresource,
-+ rootResource,
- portal,
- credentialFactories,
- loginInterfaces
- ))
+- portal,
+- credentialFactories,
+- loginInterfaces
+- ))
++ portal = Portal(DavRealm())
++ portal.registerChecker(TwistedPropertyChecker())
- rootresource.setAccessControlList(self.grant(davxml.All()))
-+ rootResource.setAccessControlList(self.grant(davxml.All()))
++ credentialFactories = (basic.BasicCredentialFactory(""),)
- userresource = TestDAVPrincipalResource("/principals/user01")
- userresource.writeDeadProperty(TwistedPasswordProperty.fromString("user01"))
--
++ loginInterfaces = (IPrincipal,)
+
- rootresource.putChild(
- "principals",
- TestResource("/principals", {"user01": userresource})
- )
--
++ self.site = Site(AuthenticationWrapper(
++ rootResource,
++ portal,
++ credentialFactories,
++ loginInterfaces
++ ))
+
- rootresource.writeDeadProperty(
- davxml.PrincipalCollectionSet(davxml.HRef("/principals/"))
- )
++ rootResource.setAccessControlList(self.grant(davxml.All()))
+
+- for name, acl in (
+- ("none" , self.grant()),
+- ("read" , self.grant(davxml.Read())),
+- ("read-write" , self.grant(davxml.Read(), davxml.Write())),
+- ("unlock" , self.grant(davxml.Unlock())),
+- ("all" , self.grant(davxml.All())),
+- ):
+- filename = os.path.join(docroot, name)
+- if not os.path.isfile(filename):
+- file(filename, "w").close()
+- resource = self.resource_class(filename)
+- resource.setAccessControlList(acl)
++ for name, acl in (
++ ("none" , self.grant()),
++ ("read" , self.grant(davxml.Read())),
++ ("read-write" , self.grant(davxml.Read(), davxml.Write())),
++ ("unlock" , self.grant(davxml.Unlock())),
++ ("all" , self.grant(davxml.All())),
++ ):
++ filename = os.path.join(docroot, name)
++ if not os.path.isfile(filename):
++ file(filename, "w").close()
++ resource = self.resource_class(filename)
++ resource.setAccessControlList(acl)
+
+- for name, acl in (
+- ("nobind" , self.grant()),
+- ("bind" , self.grant(davxml.Bind())),
+- ("unbind" , self.grant(davxml.Bind(), davxml.Unbind())),
+- ):
+- dirname = os.path.join(docroot, name)
+- if not os.path.isdir(dirname):
+- os.mkdir(dirname)
+- resource = self.resource_class(dirname)
+- resource.setAccessControlList(acl)
++ for name, acl in (
++ ("nobind" , self.grant()),
++ ("bind" , self.grant(davxml.Bind())),
++ ("unbind" , self.grant(davxml.Bind(), davxml.Unbind())),
++ ):
++ dirname = os.path.join(docroot, name)
++ if not os.path.isdir(dirname):
++ os.mkdir(dirname)
++ resource = self.resource_class(dirname)
++ resource.setAccessControlList(acl)
++ return docroot
+
+- self._docroot = docroot
+
+- return self._docroot
-
- for name, acl in (
- ("none" , self.grant()),
- ("read" , self.grant(davxml.Read())),
-@@ -342,9 +361,7 @@
+- docroot = property(_getDocumentRoot)
+-
+ def restore(self):
+ if hasattr(self, "_docroot"):
+ print "*"*40
+@@ -342,9 +356,7 @@
if method == "GET":
ok = responsecode.OK
elif method == "REPORT":
@@ -97,7 +161,7 @@
else:
raise AssertionError("We shouldn't be here. (method = %r)" % (method,))
-@@ -358,6 +375,9 @@
+@@ -358,6 +370,9 @@
path = os.path.join(self.docroot, name)
request = SimpleRequest(self.site, method, "/" + name)
Modified: CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.test_quota.patch
===================================================================
--- CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.test_quota.patch 2009-03-12 21:43:20 UTC (rev 3852)
+++ CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.test_quota.patch 2009-03-12 21:51:19 UTC (rev 3853)
@@ -12,10 +12,10 @@
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
-+#
++#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
-+#
++#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -39,28 +39,28 @@
+
+class QuotaBase(twisted.web2.dav.test.util.TestCase):
+
-+ def setUp(self):
-+
-+ #super(Quota, self).setUp()
-+ self.docroot = self.mktemp()
-+ os.mkdir(self.docroot)
-+ rootresource = self.resource_class(self.docroot)
++ def createDocumentRoot(self):
++ docroot = self.mktemp()
++ os.mkdir(docroot)
++ rootresource = self.resource_class(docroot)
+ rootresource.setAccessControlList(self.grantInherit(davxml.All()))
+ self.site = Site(rootresource)
+ self.site.resource.setQuotaRoot(None, 100000)
++ return docroot
+
++
+ def checkQuota(self, value):
+ def _defer(quota):
+ self.assertEqual(quota, value)
-+
++
+ d = self.site.resource.currentQuotaUse(None)
+ d.addCallback(_defer)
+ return d
-+
++
+class QuotaEmpty(QuotaBase):
+
+ def test_Empty_Quota(self):
-+
++
+ return self.checkQuota(0)
+
+class QuotaPUT(QuotaBase):
@@ -77,11 +77,11 @@
+ if response.code != responsecode.CREATED:
+ self.fail("Incorrect response code for PUT (%s != %s)"
+ % (response.code, responsecode.CREATED))
-+
++
+ return self.checkQuota(100)
+
+ request = SimpleRequest(self.site, "PUT", dst_uri)
-+ request.stream = FileStream(file(os.path.join(os.path.dirname(__file__), "data", "quota_100.txt"), "rb"))
++ request.stream = FileStream(file(os.path.join(os.path.dirname(__file__), "data", "quota_100.txt"), "rb"))
+ return self.send(request, checkResult)
+
+class QuotaDELETE(QuotaBase):
@@ -98,26 +98,26 @@
+ if response.code != responsecode.CREATED:
+ self.fail("Incorrect response code for PUT (%s != %s)"
+ % (response.code, responsecode.CREATED))
-+
++
+ def doDelete(_ignore):
+ def checkDELETEResult(response):
+ response = IResponse(response)
-+
++
+ if response.code != responsecode.NO_CONTENT:
+ self.fail("Incorrect response code for PUT (%s != %s)"
+ % (response.code, responsecode.NO_CONTENT))
+
+ return self.checkQuota(0)
-+
++
+ request = SimpleRequest(self.site, "DELETE", dst_uri)
+ return self.send(request, checkDELETEResult)
-+
++
+ d = self.checkQuota(100)
+ d.addCallback(doDelete)
+ return d
+
+ request = SimpleRequest(self.site, "PUT", dst_uri)
-+ request.stream = FileStream(file(os.path.join(os.path.dirname(__file__), "data", "quota_100.txt"), "rb"))
++ request.stream = FileStream(file(os.path.join(os.path.dirname(__file__), "data", "quota_100.txt"), "rb"))
+ return self.send(request, checkPUTResult)
+
+class OverQuotaPUT(QuotaBase):
@@ -136,11 +136,11 @@
+ if response.code != responsecode.INSUFFICIENT_STORAGE_SPACE:
+ self.fail("Incorrect response code for PUT (%s != %s)"
+ % (response.code, responsecode.INSUFFICIENT_STORAGE_SPACE))
-+
++
+ return self.checkQuota(0)
+
+ request = SimpleRequest(self.site, "PUT", dst_uri)
-+ request.stream = FileStream(file(os.path.join(os.path.dirname(__file__), "data", "quota_100.txt"), "rb"))
++ request.stream = FileStream(file(os.path.join(os.path.dirname(__file__), "data", "quota_100.txt"), "rb"))
+ return self.send(request, checkResult)
+
+class QuotaOKAdjustment(QuotaBase):
@@ -157,21 +157,21 @@
+ if response.code != responsecode.CREATED:
+ self.fail("Incorrect response code for PUT (%s != %s)"
+ % (response.code, responsecode.CREATED))
-+
++
+ def doOKAdjustment(_ignore):
+ def checkAdjustmentResult(_ignore):
+ return self.checkQuota(10)
-+
++
+ d = self.site.resource.quotaSizeAdjust(None, -90)
+ d.addCallback(checkAdjustmentResult)
+ return d
-+
++
+ d = self.checkQuota(100)
+ d.addCallback(doOKAdjustment)
+ return d
+
+ request = SimpleRequest(self.site, "PUT", dst_uri)
-+ request.stream = FileStream(file(os.path.join(os.path.dirname(__file__), "data", "quota_100.txt"), "rb"))
++ request.stream = FileStream(file(os.path.join(os.path.dirname(__file__), "data", "quota_100.txt"), "rb"))
+ return self.send(request, checkPUTResult)
+
+class QuotaBadAdjustment(QuotaBase):
@@ -188,19 +188,19 @@
+ if response.code != responsecode.CREATED:
+ self.fail("Incorrect response code for PUT (%s != %s)"
+ % (response.code, responsecode.CREATED))
-+
++
+ def doBadAdjustment(_ignore):
+ def checkAdjustmentResult(_ignore):
+ return self.checkQuota(100)
-+
++
+ d = self.site.resource.quotaSizeAdjust(None, -200)
+ d.addCallback(checkAdjustmentResult)
+ return d
-+
++
+ d = self.checkQuota(100)
+ d.addCallback(doBadAdjustment)
+ return d
+
+ request = SimpleRequest(self.site, "PUT", dst_uri)
-+ request.stream = FileStream(file(os.path.join(os.path.dirname(__file__), "data", "quota_100.txt"), "rb"))
++ request.stream = FileStream(file(os.path.join(os.path.dirname(__file__), "data", "quota_100.txt"), "rb"))
+ return self.send(request, checkPUTResult)
Modified: CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.util.patch
===================================================================
--- CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.util.patch 2009-03-12 21:43:20 UTC (rev 3852)
+++ CalendarServer/branches/exarkun/update-twisted-3816/lib-patches/Twisted/twisted.web2.dav.test.util.patch 2009-03-12 21:51:19 UTC (rev 3853)
@@ -1,8 +1,87 @@
-Index: twisted/web2/dav/test/util.py
+Index: util.py
===================================================================
---- twisted/web2/dav/test/util.py (revision 26343)
-+++ twisted/web2/dav/test/util.py (working copy)
-@@ -197,10 +197,11 @@
+--- util.py (revision 26346)
++++ util.py (working copy)
+@@ -117,44 +117,47 @@
+
+ grantInherit = staticmethod(grantInherit)
+
+- def _getDocumentRoot(self):
+- if not hasattr(self, "_docroot"):
+- log.msg("Setting up docroot for %s" % (self.__class__,))
++ def createDocumentRoot(self):
++ docroot = self.mktemp()
++ os.mkdir(docroot)
++ rootresource = self.resource_class(docroot)
++ rootresource.setAccessControlList(self.grantInherit(davxml.All()))
+
+- docroot = self.mktemp()
+- os.mkdir(docroot)
+- rootresource = self.resource_class(docroot)
+- rootresource.setAccessControlList(self.grantInherit(davxml.All()))
++ dirnames = (
++ os.path.join(docroot, "dir1"), # 0
++ os.path.join(docroot, "dir2"), # 1
++ os.path.join(docroot, "dir2", "subdir1"), # 2
++ os.path.join(docroot, "dir3"), # 3
++ os.path.join(docroot, "dir4"), # 4
++ os.path.join(docroot, "dir4", "subdir1"), # 5
++ os.path.join(docroot, "dir4", "subdir1", "subsubdir1"), # 6
++ os.path.join(docroot, "dir4", "subdir2"), # 7
++ os.path.join(docroot, "dir4", "subdir2", "dir1"), # 8
++ os.path.join(docroot, "dir4", "subdir2", "dir2"), # 9
++ )
+
+- dirnames = (
+- os.path.join(docroot, "dir1"), # 0
+- os.path.join(docroot, "dir2"), # 1
+- os.path.join(docroot, "dir2", "subdir1"), # 2
+- os.path.join(docroot, "dir3"), # 3
+- os.path.join(docroot, "dir4"), # 4
+- os.path.join(docroot, "dir4", "subdir1"), # 5
+- os.path.join(docroot, "dir4", "subdir1", "subsubdir1"), # 6
+- os.path.join(docroot, "dir4", "subdir2"), # 7
+- os.path.join(docroot, "dir4", "subdir2", "dir1"), # 8
+- os.path.join(docroot, "dir4", "subdir2", "dir2"), # 9
+- )
++ for dir in dirnames:
++ os.mkdir(dir)
+
+- for dir in dirnames:
+- os.mkdir(dir)
++ src = os.path.dirname(__file__)
++ filenames = [
++ os.path.join(src, f)
++ for f in os.listdir(src)
++ if os.path.isfile(os.path.join(src, f))
++ ]
+
+- src = os.path.dirname(__file__)
+- filenames = [
+- os.path.join(src, f)
+- for f in os.listdir(src)
+- if os.path.isfile(os.path.join(src, f))
+- ]
++ for dirname in (docroot,) + dirnames[3:8+1]:
++ for filename in filenames[:5]:
++ copy(filename, dirname)
++ return docroot
+
+- for dirname in (docroot,) + dirnames[3:8+1]:
+- for filename in filenames[:5]:
+- copy(filename, dirname)
+
+- self._docroot = docroot
++ def _getDocumentRoot(self):
++ if not hasattr(self, "_docroot"):
++ log.msg("Setting up docroot for %s" % (self.__class__,))
+
++ self._docroot = self.createDocumentRoot()
++
+ return self._docroot
+
+ docroot = property(_getDocumentRoot)
+@@ -197,10 +200,11 @@
d.addCallback(lambda resource: resource.renderHTTP(request))
d.addCallback(request._cbFinishRender)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090312/ebf1571c/attachment-0001.html>
More information about the calendarserver-changes
mailing list