]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
CLI: check for pre-existing aliases in 'tahoe create-alias' and 'tahoe add-alias'
authorBrian Warner <warner@lothar.com>
Wed, 3 Dec 2008 03:20:22 +0000 (20:20 -0700)
committerBrian Warner <warner@lothar.com>
Wed, 3 Dec 2008 03:20:22 +0000 (20:20 -0700)
src/allmydata/scripts/tahoe_add_alias.py
src/allmydata/test/test_cli.py

index 383bb1abc46cb1545033b87b606f44b7c39d8db6..e74a13eeaedfdc826a1e0b2be521c38e273cfcc8 100644 (file)
@@ -10,11 +10,15 @@ def add_alias(options):
     cap = options.cap
     stdout = options.stdout
     stderr = options.stderr
-    aliasfile = os.path.join(nodedir, "private", "aliases")
-    cap = uri.from_string_dirnode(cap).to_string()
     assert ":" not in alias
     assert " " not in alias
-    # probably check for others..
+
+    old_aliases = get_aliases(nodedir)
+    if alias in old_aliases:
+        print >>stderr, "Alias '%s' already exists!" % alias
+        return 1
+    aliasfile = os.path.join(nodedir, "private", "aliases")
+    cap = uri.from_string_dirnode(cap).to_string()
     f = open(aliasfile, "a")
     f.write("%s: %s\n" % (alias, cap))
     f.close()
@@ -27,10 +31,16 @@ def create_alias(options):
     alias = options.alias
     stdout = options.stdout
     stderr = options.stderr
-    aliasfile = os.path.join(nodedir, "private", "aliases")
     assert ":" not in alias
     assert " " not in alias
 
+    old_aliases = get_aliases(nodedir)
+    if alias in old_aliases:
+        print >>stderr, "Alias '%s' already exists!" % alias
+        return 1
+
+    aliasfile = os.path.join(nodedir, "private", "aliases")
+
     nodeurl = options['node-url']
     if not nodeurl.endswith("/"):
         nodeurl += "/"
index b9d312ddcb0b89051c8c58f31f879f22bdd6906c..fdd6f05d1273c22d8954b2d97d3c44f24bfcace2 100644 (file)
@@ -307,8 +307,32 @@ class CreateAlias(SystemTestMixin, CLITestMixin, unittest.TestCase):
             self.tahoe_url = uribase + urllib.quote(aliases["tahoe"])
             self.tahoe_subdir_url = self.tahoe_url + "/subdir"
             self.two_url = uribase + urllib.quote(aliases["two"])
+            self.two_uri = aliases["two"]
         d.addCallback(_stash_urls)
 
+        d.addCallback(lambda res: self.do_cli("create-alias", "two")) # dup
+        def _check_create_duplicate((rc,stdout,stderr)):
+            self.failIfEqual(rc, 0)
+            self.failUnless("Alias 'two' already exists!" in stderr)
+            aliases = get_aliases(self.getdir("client0"))
+            self.failUnlessEqual(aliases["two"], self.two_uri)
+        d.addCallback(_check_create_duplicate)
+
+        d.addCallback(lambda res: self.do_cli("add-alias", "added", self.two_uri))
+        def _check_add((rc,stdout,stderr)):
+            self.failUnlessEqual(rc, 0)
+            self.failUnless("Alias 'added' added" in stdout)
+        d.addCallback(_check_add)
+
+        # check add-alias with a duplicate
+        d.addCallback(lambda res: self.do_cli("add-alias", "two", self.two_uri))
+        def _check_add_duplicate((rc,stdout,stderr)):
+            self.failIfEqual(rc, 0)
+            self.failUnless("Alias 'two' already exists!" in stderr)
+            aliases = get_aliases(self.getdir("client0"))
+            self.failUnlessEqual(aliases["two"], self.two_uri)
+        d.addCallback(_check_add_duplicate)
+
         def _test_urls(junk):
             self._test_webopen([], self.tahoe_url)
             self._test_webopen(["/"], self.tahoe_url)