mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-02-07 20:00:20 +00:00
validate_config: improve tests
closes ticket:2809
This commit is contained in:
parent
2732c37941
commit
74dc7194b6
@ -179,7 +179,8 @@ class Client(node.Node, pollmixin.PollMixin):
|
|||||||
node.Node.__init__(self, basedir)
|
node.Node.__init__(self, basedir)
|
||||||
# All tub.registerReference must happen *after* we upcall, since
|
# All tub.registerReference must happen *after* we upcall, since
|
||||||
# that's what does tub.setLocation()
|
# 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._magic_folder = None
|
||||||
self.started_timestamp = time.time()
|
self.started_timestamp = time.time()
|
||||||
self.logSource="Client"
|
self.logSource="Client"
|
||||||
|
@ -97,27 +97,7 @@ def write_node_config(c, config):
|
|||||||
c.write("#ssh.authorized_keys_file = ~/.ssh/authorized_keys\n")
|
c.write("#ssh.authorized_keys_file = ~/.ssh/authorized_keys\n")
|
||||||
c.write("\n")
|
c.write("\n")
|
||||||
|
|
||||||
|
def write_client_config(c, config):
|
||||||
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)
|
|
||||||
|
|
||||||
c.write("[client]\n")
|
c.write("[client]\n")
|
||||||
c.write("# Which services should this client connect to?\n")
|
c.write("# Which services should this client connect to?\n")
|
||||||
c.write("introducer.furl = %s\n" % config.get("introducer", ""))
|
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("enabled = false\n")
|
||||||
c.write("\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()
|
c.close()
|
||||||
|
|
||||||
from allmydata.util import fileutil
|
from allmydata.util import fileutil
|
||||||
|
@ -5,6 +5,8 @@ from twisted.trial import unittest
|
|||||||
from allmydata.util import configutil
|
from allmydata.util import configutil
|
||||||
from allmydata.test.no_network import GridTestMixin
|
from allmydata.test.no_network import GridTestMixin
|
||||||
from .cli.test_cli import CLITestMixin
|
from .cli.test_cli import CLITestMixin
|
||||||
|
from ..scripts import create_node
|
||||||
|
from .. import client
|
||||||
|
|
||||||
|
|
||||||
class ConfigUtilTests(CLITestMixin, GridTestMixin, unittest.TestCase):
|
class ConfigUtilTests(CLITestMixin, GridTestMixin, unittest.TestCase):
|
||||||
@ -54,11 +56,12 @@ class ConfigUtilTests(CLITestMixin, GridTestMixin, unittest.TestCase):
|
|||||||
f.write('[node]\nvalid = foo\ninvalid = foo\n')
|
f.write('[node]\nvalid = foo\ninvalid = foo\n')
|
||||||
|
|
||||||
config = configutil.get_config(fname)
|
config = configutil.get_config(fname)
|
||||||
self.assertRaises(
|
e = self.assertRaises(
|
||||||
configutil.UnknownConfigError,
|
configutil.UnknownConfigError,
|
||||||
configutil.validate_config,
|
configutil.validate_config,
|
||||||
fname, config, dict(node=['valid']),
|
fname, config, dict(node=['valid']),
|
||||||
)
|
)
|
||||||
|
self.assertIn("section [node] contains unknown option 'invalid'", str(e))
|
||||||
|
|
||||||
def test_config_validation_invalid_section(self):
|
def test_config_validation_invalid_section(self):
|
||||||
d = self.mktemp()
|
d = self.mktemp()
|
||||||
@ -69,8 +72,27 @@ class ConfigUtilTests(CLITestMixin, GridTestMixin, unittest.TestCase):
|
|||||||
f.write('[node]\nvalid = foo\n[invalid]\n')
|
f.write('[node]\nvalid = foo\n[invalid]\n')
|
||||||
|
|
||||||
config = configutil.get_config(fname)
|
config = configutil.get_config(fname)
|
||||||
self.assertRaises(
|
e = self.assertRaises(
|
||||||
configutil.UnknownConfigError,
|
configutil.UnknownConfigError,
|
||||||
configutil.validate_config,
|
configutil.validate_config,
|
||||||
fname, config, dict(node=['valid']),
|
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())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user