mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-19 03:06:33 +00:00
test_filenode.py : improve coverage of mutable filenode, fix a bug in __hash__
This commit is contained in:
parent
f6ca62df31
commit
e6489b1ef2
@ -1580,13 +1580,13 @@ class MutableFileNode:
|
||||
return self._uri.is_readonly()
|
||||
|
||||
def __hash__(self):
|
||||
return hash((self.__class__, self.uri))
|
||||
return hash((self.__class__, self._uri))
|
||||
def __cmp__(self, them):
|
||||
if cmp(type(self), type(them)):
|
||||
return cmp(type(self), type(them))
|
||||
if cmp(self.__class__, them.__class__):
|
||||
return cmp(self.__class__, them.__class__)
|
||||
return cmp(self.uri, them.uri)
|
||||
return cmp(self._uri, them._uri)
|
||||
|
||||
def get_verifier(self):
|
||||
return IMutableFileURI(self._uri).get_verifier()
|
||||
|
@ -1,6 +1,7 @@
|
||||
|
||||
from twisted.trial import unittest
|
||||
from allmydata import filenode, uri, download
|
||||
from allmydata import filenode, uri, download, mutable
|
||||
from allmydata.util import hashutil
|
||||
|
||||
class NotANode:
|
||||
pass
|
||||
@ -57,3 +58,48 @@ class Node(unittest.TestCase):
|
||||
d.addCallback(_check)
|
||||
return d
|
||||
|
||||
def test_mutable_filenode(self):
|
||||
client = None
|
||||
wk = "\x00"*16
|
||||
fp = "\x00"*32
|
||||
rk = hashutil.ssk_readkey_hash(wk)
|
||||
si = hashutil.ssk_storage_index_hash(rk)
|
||||
|
||||
u = uri.WriteableSSKFileURI("\x00"*16, "\x00"*32)
|
||||
n = mutable.MutableFileNode(client).init_from_uri(u)
|
||||
|
||||
self.failUnlessEqual(n.get_writekey(), wk)
|
||||
self.failUnlessEqual(n.get_readkey(), rk)
|
||||
self.failUnlessEqual(n.get_storage_index(), si)
|
||||
# these itmes are populated on first read (or create), so until that
|
||||
# happens they'll be None
|
||||
self.failUnlessEqual(n.get_privkey(), None)
|
||||
self.failUnlessEqual(n.get_encprivkey(), None)
|
||||
self.failUnlessEqual(n.get_pubkey(), None)
|
||||
|
||||
self.failUnlessEqual(n.get_uri(), u.to_string())
|
||||
self.failUnlessEqual(n.get_readonly_uri(), u.get_readonly().to_string())
|
||||
self.failUnlessEqual(n.is_mutable(), True)
|
||||
self.failUnlessEqual(n.is_readonly(), False)
|
||||
|
||||
n2 = mutable.MutableFileNode(client).init_from_uri(u)
|
||||
self.failUnlessEqual(n, n2)
|
||||
self.failIfEqual(n, "not even the right type")
|
||||
self.failIfEqual(n, u) # not the right class
|
||||
d = {n: "can these be used as dictionary keys?"}
|
||||
d[n2] = "replace the old one"
|
||||
self.failUnlessEqual(len(d), 1)
|
||||
|
||||
nro = n.get_readonly()
|
||||
self.failUnless(isinstance(nro, mutable.MutableFileNode))
|
||||
|
||||
self.failUnlessEqual(nro.get_readonly(), nro)
|
||||
nro_u = nro.get_uri()
|
||||
self.failUnlessEqual(nro_u, nro.get_readonly_uri())
|
||||
self.failUnlessEqual(nro_u, u.get_readonly().to_string())
|
||||
self.failUnlessEqual(nro.is_mutable(), True)
|
||||
self.failUnlessEqual(nro.is_readonly(), True)
|
||||
|
||||
v = n.get_verifier()
|
||||
self.failUnless(isinstance(v, uri.SSKVerifierURI))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user