validate_config: improve tests

closes ticket:2809
This commit is contained in:
Brian Warner 2016-09-06 19:23:51 -07:00
parent 2732c37941
commit 74dc7194b6
3 changed files with 48 additions and 24 deletions

View File

@ -179,7 +179,8 @@ class Client(node.Node, pollmixin.PollMixin):
node.Node.__init__(self, basedir)
# All tub.registerReference must happen *after* we upcall, since
# that's what does tub.setLocation()
configutil.validate_config(self.config_fname, self.config, _valid_config_sections())
configutil.validate_config(self.config_fname, self.config,
_valid_config_sections())
self._magic_folder = None
self.started_timestamp = time.time()
self.logSource="Client"

View File

@ -97,27 +97,7 @@ def write_node_config(c, config):
c.write("#ssh.authorized_keys_file = ~/.ssh/authorized_keys\n")
c.write("\n")
def create_node(config, out=sys.stdout, err=sys.stderr):
basedir = config['basedir']
# This should always be called with an absolute Unicode basedir.
precondition(isinstance(basedir, unicode), basedir)
if os.path.exists(basedir):
if listdir_unicode(basedir):
print >>err, "The base directory %s is not empty." % quote_local_unicode_path(basedir)
print >>err, "To avoid clobbering anything, I am going to quit now."
print >>err, "Please use a different directory, or empty this one."
return -1
# we're willing to use an empty directory
else:
os.mkdir(basedir)
write_tac(basedir, "client")
c = open(os.path.join(basedir, "tahoe.cfg"), "w")
write_node_config(c, config)
def write_client_config(c, config):
c.write("[client]\n")
c.write("# Which services should this client connect to?\n")
c.write("introducer.furl = %s\n" % config.get("introducer", ""))
@ -149,6 +129,27 @@ def create_node(config, out=sys.stdout, err=sys.stderr):
c.write("enabled = false\n")
c.write("\n")
def create_node(config, out=sys.stdout, err=sys.stderr):
basedir = config['basedir']
# This should always be called with an absolute Unicode basedir.
precondition(isinstance(basedir, unicode), basedir)
if os.path.exists(basedir):
if listdir_unicode(basedir):
print >>err, "The base directory %s is not empty." % quote_local_unicode_path(basedir)
print >>err, "To avoid clobbering anything, I am going to quit now."
print >>err, "Please use a different directory, or empty this one."
return -1
# we're willing to use an empty directory
else:
os.mkdir(basedir)
write_tac(basedir, "client")
c = open(os.path.join(basedir, "tahoe.cfg"), "w")
write_node_config(c, config)
write_client_config(c, config)
c.close()
from allmydata.util import fileutil

View File

@ -5,6 +5,8 @@ from twisted.trial import unittest
from allmydata.util import configutil
from allmydata.test.no_network import GridTestMixin
from .cli.test_cli import CLITestMixin
from ..scripts import create_node
from .. import client
class ConfigUtilTests(CLITestMixin, GridTestMixin, unittest.TestCase):
@ -54,11 +56,12 @@ class ConfigUtilTests(CLITestMixin, GridTestMixin, unittest.TestCase):
f.write('[node]\nvalid = foo\ninvalid = foo\n')
config = configutil.get_config(fname)
self.assertRaises(
e = self.assertRaises(
configutil.UnknownConfigError,
configutil.validate_config,
fname, config, dict(node=['valid']),
)
self.assertIn("section [node] contains unknown option 'invalid'", str(e))
def test_config_validation_invalid_section(self):
d = self.mktemp()
@ -69,8 +72,27 @@ class ConfigUtilTests(CLITestMixin, GridTestMixin, unittest.TestCase):
f.write('[node]\nvalid = foo\n[invalid]\n')
config = configutil.get_config(fname)
self.assertRaises(
e = self.assertRaises(
configutil.UnknownConfigError,
configutil.validate_config,
fname, config, dict(node=['valid']),
)
self.assertIn("contains unknown section [invalid]", str(e))
def test_create_client_config(self):
d = self.mktemp()
os.mkdir(d)
fname = os.path.join(d, 'tahoe.cfg')
with open(fname, 'w') as f:
opts = {"nickname": "nick",
"webport": "tcp:3456",
"hide-ip": False,
}
create_node.write_node_config(f, opts)
create_node.write_client_config(f, opts)
config = configutil.get_config(fname)
# should succeed, no exceptions
configutil.validate_config(fname, config,
client._valid_config_sections())