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)
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.
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):
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)
+
+