- bad_future_node1 = UnknownNode(future_write_uri, None)
- bad_kids1 = {one_nfd: (bad_future_node1, {})}
- d.addCallback(lambda ign:
- self.shouldFail(MustNotBeUnknownRWError, "bad_kids1",
- "cannot attach unknown",
- c.create_immutable_dirnode,
- bad_kids1))
- bad_future_node2 = UnknownNode(future_write_uri, future_read_uri)
- bad_kids2 = {one_nfd: (bad_future_node2, {})}
- d.addCallback(lambda ign:
- self.shouldFail(MustBeDeepImmutableError, "bad_kids2",
- "is not allowed in an immutable directory",
- c.create_immutable_dirnode,
- bad_kids2))
- bad_kids3 = {one_nfd: (nm.create_from_cap(one_uri), None)}
- d.addCallback(lambda ign:
- self.shouldFail(AssertionError, "bad_kids3",
- "requires metadata to be a dict",
- c.create_immutable_dirnode,
- bad_kids3))
- bad_kids4 = {one_nfd: (nm.create_from_cap(mut_write_uri), {})}
- d.addCallback(lambda ign:
- self.shouldFail(MustBeDeepImmutableError, "bad_kids4",
- "is not allowed in an immutable directory",
- c.create_immutable_dirnode,
- bad_kids4))
- bad_kids5 = {one_nfd: (nm.create_from_cap(mut_read_uri), {})}
- d.addCallback(lambda ign:
- self.shouldFail(MustBeDeepImmutableError, "bad_kids5",
- "is not allowed in an immutable directory",
- c.create_immutable_dirnode,
- bad_kids5))
- d.addCallback(lambda ign: c.create_immutable_dirnode({}))
- def _created_empty(dn):
- self.failUnless(isinstance(dn, dirnode.DirectoryNode))
- self.failIf(dn.is_mutable())
- self.failUnless(dn.is_readonly())
- self.failIf(dn.is_unknown())
- self.failUnless(dn.is_allowed_in_immutable_directory())
- dn.raise_error()
- rep = str(dn)
- self.failUnless("RO-IMM" in rep)
- cap = dn.get_cap()
- self.failUnlessIn("LIT", cap.to_string())
- self.failUnlessReallyEqual(cap.to_string(), "URI:DIR2-LIT:")
- self.cap = cap
- return dn.list()
- d.addCallback(_created_empty)
- d.addCallback(lambda kids: self.failUnlessEqual(kids, {}))
- smallkids = {u"o": (nm.create_from_cap(one_uri), {})}
- d.addCallback(lambda ign: c.create_immutable_dirnode(smallkids))
- def _created_small(dn):
- self.failUnless(isinstance(dn, dirnode.DirectoryNode))
- self.failIf(dn.is_mutable())
- self.failUnless(dn.is_readonly())
- self.failIf(dn.is_unknown())
- self.failUnless(dn.is_allowed_in_immutable_directory())
- dn.raise_error()
- rep = str(dn)
- self.failUnless("RO-IMM" in rep)
- cap = dn.get_cap()
- self.failUnlessIn("LIT", cap.to_string())
- self.failUnlessReallyEqual(cap.to_string(),
- "URI:DIR2-LIT:gi4tumj2n4wdcmz2kvjesosmjfkdu3rvpbtwwlbqhiwdeot3puwcy")
- self.cap = cap
- return dn.list()
- d.addCallback(_created_small)
- d.addCallback(lambda kids: self.failUnlessReallyEqual(kids.keys(), [u"o"]))
-
- # now test n.create_subdirectory(mutable=False)
- d.addCallback(lambda ign: c.create_dirnode())
- def _made_parent(n):
- d = n.create_subdirectory(u"subdir", kids, mutable=False)
- d.addCallback(lambda sd: sd.list())
- d.addCallback(_check_kids)
- d.addCallback(lambda ign: n.list())
- d.addCallback(lambda children:
- self.failUnlessReallyEqual(children.keys(), [u"subdir"]))
- d.addCallback(lambda ign: n.get(u"subdir"))
- d.addCallback(lambda sd: sd.list())
- d.addCallback(_check_kids)
- d.addCallback(lambda ign: n.get(u"subdir"))
- d.addCallback(lambda sd: self.failIf(sd.is_mutable()))
- bad_kids = {one_nfd: (nm.create_from_cap(mut_write_uri), {})}
- d.addCallback(lambda ign:
- self.shouldFail(MustBeDeepImmutableError, "YZ",
- "is not allowed in an immutable directory",
- n.create_subdirectory,
- u"sub2", bad_kids, mutable=False))
- return d
- d.addCallback(_made_parent)
- return d