62 lines
2.5 KiB
Python
62 lines
2.5 KiB
Python
import os, sys, tempfile, unittest
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'payload', 'user', 'remote_access', 'pager-webui'))
|
|
import mk8_profiles
|
|
|
|
CONFIGS = ('pineapd', 'wireless', 'network')
|
|
|
|
class ProfilesTest(unittest.TestCase):
|
|
def setUp(self):
|
|
self.dir = tempfile.mkdtemp()
|
|
mk8_profiles.PROFILES_DIR = os.path.join(self.dir, 'profiles')
|
|
self.state = {'pineapd': 'config pineapd\n\toption x y\n',
|
|
'wireless': 'config wireless\n',
|
|
'network': 'config network\n'}
|
|
def fake_run(args, timeout=20, input_data=None):
|
|
a = list(args)
|
|
if a[:2] == ['uci', 'import']:
|
|
self.imports = getattr(self, 'imports', [])
|
|
self.imports.append((a[2], input_data))
|
|
return (0, '', '')
|
|
if a[:2] == ['uci', 'export']:
|
|
return (0, self.state.get(a[2], ''), '')
|
|
if a[:2] == ['uci', 'commit']:
|
|
return (0, '', '')
|
|
return (0, '', '')
|
|
self.runs = []
|
|
mk8_profiles.run_cmd = lambda args, timeout=20, input_data=None: (
|
|
self.runs.append(list(args)) or fake_run(args, timeout, input_data))
|
|
|
|
def test_snapshot_and_list(self):
|
|
self.assertTrue(mk8_profiles.snapshot('testprof'))
|
|
self.assertIn('testprof', mk8_profiles.list_profiles())
|
|
|
|
def test_restore_issues_import_per_config(self):
|
|
mk8_profiles.snapshot('p1')
|
|
ok = mk8_profiles.restore('p1')
|
|
self.assertTrue(ok['ok'])
|
|
imported = [r for r in self.runs if r[:2] == ['uci', 'import']]
|
|
self.assertEqual(len(imported), len(CONFIGS))
|
|
commits = [r for r in self.runs if r[:2] == ['uci', 'commit']]
|
|
self.assertGreaterEqual(len(commits), 1)
|
|
self.assertIn(('pineapd', 'config pineapd\n\toption x y\n'),
|
|
self.imports)
|
|
self.assertEqual(ok['restored'], list(CONFIGS))
|
|
|
|
def test_auto_name_format(self):
|
|
name = mk8_profiles.auto_name('client_connect')
|
|
self.assertTrue(name.startswith('pre-client_connect-'))
|
|
|
|
def test_promote_lastknown_good(self):
|
|
self.assertTrue(mk8_profiles.promote_lastknown_good())
|
|
self.assertIn(mk8_profiles.LASTKNOWN_GOOD,
|
|
mk8_profiles.list_profiles())
|
|
again = mk8_profiles.promote_lastknown_good()
|
|
self.assertTrue(again)
|
|
|
|
def test_snapshot_false_when_nothing_written(self):
|
|
self.state = {}
|
|
self.assertFalse(mk8_profiles.snapshot('empty'))
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|