From: kevan Date: Sat, 18 Jul 2009 19:50:49 +0000 (-0700) Subject: Add unit tests for the Adder in dirnode.py X-Git-Tag: allmydata-tahoe-1.5.0~37 X-Git-Url: https://git.rkrishnan.org/pf/content/en/seg/priv.html?a=commitdiff_plain;h=ca4de9ee974af40dc26fa9fb23a83ebbf153825a;p=tahoe-lafs%2Ftahoe-lafs.git Add unit tests for the Adder in dirnode.py --- diff --git a/src/allmydata/test/test_dirnode.py b/src/allmydata/test/test_dirnode.py index 7ed41b2e..e873337a 100644 --- a/src/allmydata/test/test_dirnode.py +++ b/src/allmydata/test/test_dirnode.py @@ -966,3 +966,70 @@ class Deleter(GridTestMixin, unittest.TestCase): return d +class Adder(unittest.TestCase, + testutil.ShouldFailMixin, testutil.StallMixin, ErrorMixin): + + def setUp(self): + self.client = FakeClient() + + def test_overwrite(self): + fileuri = make_chk_file_uri(1234) + filenode = self.client.create_node_from_uri(fileuri) + d = self.client.create_empty_dirnode() + + def _create_directory_tree(root_node): + # Build + # root/file1 + # root/file2 + # root/dir1 + d = root_node.add_file(u'file1', upload.Data("Important Things", + None)) + d.addCallback(lambda res: + root_node.add_file(u'file2', upload.Data("Sekrit Codes", + None))) + d.addCallback(lambda res: + root_node.create_empty_directory(u"dir1")) + d.addCallback(lambda res: root_node) + return d + + d.addCallback(_create_directory_tree) + + def _test_adder(root_node): + d = root_node.set_node(u'file1', filenode) + + # We've overwritten file1. Let's try it with a directory + d.addCallback(lambda res: + root_node.create_empty_directory(u'dir2')) + + d.addCallback(lambda res: + root_node.set_node(u'dir2', filenode)) + + # We try overwriting a file with a child while also specifying + # overwrite=False. We should receive an ExistingChildError + # when we do this. + d.addCallback(lambda res: + self.shouldFail(ExistingChildError, "set_node", + "child 'file1' already exists", + root_node.set_node, u"file1", + filenode, overwrite=False)) + + # If we try with a directory, we should see the same thing + d.addCallback(lambda res: + self.shouldFail(ExistingChildError, "set_node", + "child 'dir1' already exists", + root_node.set_node, u'dir1', filenode, + overwrite=False)) + + d.addCallback(lambda res: + root_node.set_node(u'file1', filenode, + overwrite="only_files")) + + d.addCallback(lambda res: + self.shouldFail(ExistingChildError, "set_node", + "child 'dir1' already exists", + root_node.set_node, u'dir1', filenode, + overwrite="only_files")) + return d + + d.addCallback(_test_adder) + return d