12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from unittest import TestCase
- from unittest.mock import patch, call
- from qubesagent.vmexec import main, decode, DecodeError
- class TestVmExec(TestCase):
- def test_00_decode_simple(self):
- self.assertEqual(decode('echo+Hello'), [b'echo', b'Hello'])
- def test_01_decode_empty(self):
- self.assertEqual(decode('echo+'), [b'echo', b''])
- def test_02_decode_escaping(self):
- self.assertEqual(decode('echo+Hello-20world'),
- [b'echo', b'Hello world'])
- self.assertEqual(decode('-0A-0D'),
- [b'\n\r'])
- self.assertEqual(decode('-2Fbin-2Fls'),
- [b'/bin/ls'])
- self.assertEqual(decode('ls+--la'),
- [b'ls', b'-la'])
- self.assertEqual(decode('ls+---61'),
- [b'ls', b'-a'])
- self.assertEqual(decode('ls+----help'),
- [b'ls', b'--help'])
- def test_03_decode_errors(self):
- with self.assertRaises(DecodeError):
- decode('illegal/slash')
- with self.assertRaises(DecodeError):
- decode('illegal-singledash')
- with self.assertRaises(DecodeError):
- decode('smalletters-0a-0d')
- with self.assertRaises(DecodeError):
- decode('incompletebyte-A')
- with self.assertRaises(DecodeError):
- decode('incomplete-Abyte')
- with self.assertRaises(DecodeError):
- decode('ls+---threeslashes')
- def test_10_main_exec(self):
- with patch('os.execvp') as mock_execvp:
- main(['vmexec', 'ls+--la'])
- self.assertEqual(mock_execvp.call_args_list, [
- call(b'ls', [b'ls', b'-la'])])
- def test_11_main_fail(self):
- with self.assertRaises(SystemExit):
- main(['vmexec'])
- with self.assertRaises(SystemExit):
- main(['vmexec', 'illegal/slash'])
|