From: wilcoxjg Date: Wed, 29 Aug 2007 06:28:26 +0000 (-0700) Subject: created DirnodeURI schema X-Git-Url: https://git.rkrishnan.org/components/?a=commitdiff_plain;h=33bae16ed2b543e3fa40eb4a18889a2b9cadc463;p=tahoe-lafs%2Ftahoe-lafs.git created DirnodeURI schema --- diff --git a/src/allmydata/interfaces.py b/src/allmydata/interfaces.py index 2fb60e9a..e2edc242 100644 --- a/src/allmydata/interfaces.py +++ b/src/allmydata/interfaces.py @@ -13,6 +13,7 @@ Nodeid = StringConstraint(maxLength=20, FURL = StringConstraint(1000) StorageIndex = StringConstraint(16) URI = StringConstraint(300) # kind of arbitrary +DirnodeURI = StringConstraint(300, regexp=r'^URI:DIR(-RO)?:pb://[a-z0-9]+@[^/]+/[^:]+:[a-z0-9]+$') MAX_BUCKETS = 200 # per peer ShareData = StringConstraint(400000) # 1MB segment / k=3 = 334kB URIExtensionData = StringConstraint(1000) @@ -228,7 +229,7 @@ class RIVirtualDriveServer(RemoteInterface): If this vdrive server does not offer a public root, this will raise an exception.""" - return URI + return DirnodeURI def create_directory(index=Hash, write_enabler=Hash): """Create a new (empty) directory, unattached to anything else. diff --git a/src/allmydata/test/test_uri.py b/src/allmydata/test/test_uri.py index 835d4f2a..b0b8fa52 100644 --- a/src/allmydata/test/test_uri.py +++ b/src/allmydata/test/test_uri.py @@ -2,7 +2,8 @@ from twisted.trial import unittest from allmydata import uri from allmydata.util import hashutil -from allmydata.interfaces import IURI, IFileURI, IDirnodeURI +from allmydata.interfaces import IURI, IFileURI, IDirnodeURI, DirnodeURI +from foolscap.schema import Violation class Literal(unittest.TestCase): def _help_test(self, data): @@ -137,3 +138,14 @@ class Dirnode(unittest.TestCase): self.failIf(IFileURI.providedBy(u4)) self.failUnless(IDirnodeURI.providedBy(u4)) + +class Constraint(unittest.TestCase): + def test_constraint(self): + good = 'URI:DIR:pb://xextf3eap44o3wi27mf7ehiur6wvhzr6@207.7.153.180:56677,127.0.0.1:56677/vdrive:qj51rfpnukhjmo7cm9awe5ks5e' + DirnodeURI.checkObject(good, False) + bad = good + '===' + self.failUnlessRaises(Violation, DirnodeURI.checkObject, bad, False) + fileURI = 'URI:CHK:f3mf6az85wpcai8ma4qayfmxuc:nnw518w5hu3t5oohwtp7ah9n81z9rfg6c1ywk33ia3m64o67nsgo:3:10:345834' + self.failUnlessRaises(Violation, DirnodeURI.checkObject, fileURI, False) + +