diff options
author | Samuel Smoker <classicsc@users.noreply.github.com> | 2017-02-28 19:39:24 -0800 |
---|---|---|
committer | Samuel Smoker <classicsc@users.noreply.github.com> | 2017-02-28 19:39:24 -0800 |
commit | 81c8a802ac1a234ee3ba05917ab88bb4f422c028 (patch) | |
tree | 700f3a15062ebe72c7337c751a1bd20d82239038 | |
parent | 5e35e16d2ecb7cd2e27b259aa3da5b67a1d4ca4c (diff) | |
download | syncthingmanager-81c8a802ac1a234ee3ba05917ab88bb4f422c028.tar.xz syncthingmanager-81c8a802ac1a234ee3ba05917ab88bb4f422c028.zip |
Fix and test address methods
-rw-r--r-- | syncthingmanager/__init__.py | 16 | ||||
-rw-r--r-- | syncthingmanager/tests/test_stman.py | 18 |
2 files changed, 30 insertions, 4 deletions
diff --git a/syncthingmanager/__init__.py b/syncthingmanager/__init__.py index da8e219..0973446 100644 --- a/syncthingmanager/__init__.py +++ b/syncthingmanager/__init__.py @@ -193,15 +193,23 @@ class SyncthingManager(Syncthing): address(str): a tcp://address to add. """ info = self.device_info(devicestr) - base_addresses = self.system.config()['devices'][info['index']]['addresses'] - self.edit_device(devicestr, addresses, base_addresses.append(address)) + try: + addresses = self.system.config()['devices'][info['index']]['addresses'] + except TypeError: + raise SyncthingManagerError('Device not configured: ' + devicestr) + addresses.append(address) + self.edit_device(devicestr, 'addresses', addresses) def device_remove_address(self, devicestr, address): """The inverse of device_add_address.""" info = self.device_info(devicestr) - base_addresses = self.system.config()['devices'][info['index']]['addresses'] try: - self.edit_device(devicestr, 'addresses', base_addresses.remove('address')) + addresses = self.system.config()['devices'][info['index']]['addresses'] + except TypeError: + raise SyncthingManagerError('Device not configured: ' + devicestr) + try: + addresses.remove(address) + self.edit_device(devicestr, 'addresses', addresses) except ValueError: pass diff --git a/syncthingmanager/tests/test_stman.py b/syncthingmanager/tests/test_stman.py index 6d6d996..b2139f1 100644 --- a/syncthingmanager/tests/test_stman.py +++ b/syncthingmanager/tests/test_stman.py @@ -50,6 +50,24 @@ def test_edit_device(s): assert b['compression'] == 'always' assert b['addresses'] == address +def test_device_add_address(s): + cfg = s.system.config() + a = next(filter(lambda x: x['name'] == 'SyncthingManagerTestDevice1', cfg['devices'])) + s.device_add_address('SyncthingManagerTestDevice1', 'tcp://127.0.0.2:8384') + cfg = s.system.config() + b = next(filter(lambda x: x['name'] == 'SyncthingManagerTestDevice1', cfg['devices'])) + assert 'tcp://127.0.0.2:8384' not in a['addresses'] + assert 'tcp://127.0.0.2:8384' in b['addresses'] + +def test_device_remove_address(s): + cfg = s.system.config() + a = next(filter(lambda x: x['name'] == 'SyncthingManagerTestDevice1', cfg['devices'])) + s.device_remove_address('SyncthingManagerTestDevice1', 'localhost') + cfg = s.system.config() + b = next(filter(lambda x: x['name'] == 'SyncthingManagerTestDevice1', cfg['devices'])) + assert 'localhost' in a['addresses'] + assert 'localhost' not in b['addresses'] + def test_device_change_name(s): cfg = s.system.config() a = next(filter(lambda x: x['name'] == 'SyncthingManagerTestDevice1', cfg['devices'])) |