diff --git a/src/bmconfigparser.py b/src/bmconfigparser.py index b824b7e5..5d6ea5d4 100644 --- a/src/bmconfigparser.py +++ b/src/bmconfigparser.py @@ -172,6 +172,13 @@ class BMConfigParser(SafeConfigParser): return [x for x in BMConfigParser().sections() if x.startswith('BM-') and ( hidden or not BMConfigParser().safeGetBoolean(x, 'hidden'))] + def _reset(self): + """Reset current config. There doesn't appear to be a built in + method for this""" + sections = self.sections() + for x in sections: + self.remove_section(x) + def read(self, filenames): SafeConfigParser.read(self, filenames) for section in self.sections(): diff --git a/src/tests/test_config.py b/src/tests/test_config.py index 83a8d9a1..efcf78a3 100644 --- a/src/tests/test_config.py +++ b/src/tests/test_config.py @@ -1,13 +1,60 @@ +# pylint: disable=no-member """ Various tests for config """ - import unittest +import tempfile +import sys +import os + +# from six.moves import configparser from pybitmessage.bmconfigparser import BMConfigParser +test_config = { + "bitmessagesettings": { + "maxaddrperstreamsend": 100, + "maxbootstrapconnections": 20, + "maxdownloadrate": 0, + "maxoutboundconnections": 8, + "maxtotalconnections": 200, + "maxuploadrate": 0, + "apiinterface": "127.0.0.1", + "apiport": 8442, + "udp": "True" + }, + "threads": { + "receive": 3, + }, + "network": { + "bind": "", + "dandelion": 90, + }, + "inventory": { + "storage": "sqlite", + "acceptmismatch": "False", + }, + "knownnodes": { + "maxnodes": 20000, + }, + "zlib": { + "maxsize": 1048576 + } +} + class TestConfig(unittest.TestCase): """A test case for bmconfigparser""" + config_backup = tempfile.NamedTemporaryFile(suffix='.cfg').name + + def setUp(self): + """creates a backup of BMConfigparser current state""" + with open(self.config_backup, 'wb') as configfile: + BMConfigParser().write(configfile) + + def tearDown(self): + """restore to the backup of BMConfigparser""" + BMConfigParser().read(self.config_backup) + os.remove(self.config_backup) def test_safeGet(self): """safeGet retuns provided default for nonexistent option or None""" @@ -41,3 +88,16 @@ class TestConfig(unittest.TestCase): BMConfigParser().safeGetFloat('nonexistent', 'nonexistent'), 0.0) self.assertEqual( BMConfigParser().safeGetFloat('nonexistent', 'nonexistent', 42.0), 42.0) + + def test_reset(self): + """safeGetInt retuns provided default for bitmessagesettings option or 0""" + if sys.version_info[0] >= 3: + BMConfigParser().read_dict(test_config) + else: + BMConfigParser().read('src/tests/test_config.ini') + self.assertEqual( + BMConfigParser().safeGetInt('bitmessagesettings', 'maxaddrperstreamsend'), 100) + # pylint: disable=protected-access + BMConfigParser()._reset() + self.assertEqual( + BMConfigParser().safeGetInt('bitmessagesettings', 'maxaddrperstreamsend'), 500) diff --git a/src/tests/test_pattern/test_config.ini b/src/tests/test_pattern/test_config.ini new file mode 100644 index 00000000..e17b4a6d --- /dev/null +++ b/src/tests/test_pattern/test_config.ini @@ -0,0 +1,27 @@ +[bitmessagesettings] +maxaddrperstreamsend=100 +maxbootstrapconnections=10 +maxdownloadrate=0 +maxoutboundconnections=8 +maxtotalconnections=100 +maxuploadrate=0 +apiinterface=127.0.0.1 +apiport=8442 +udp=True + +[threads] +receive=3 + +[network] +bind=None +dandelion= 90 + +[inventory] +storage= sqlite +acceptmismatch= False + +[knownnodes] +maxnodes= 15000 + +[zlib] +maxsize= 1048576 \ No newline at end of file