1import unittest 2 3from stem.interpreter.arguments import DEFAULT_ARGS, parse, get_help 4 5 6class TestArgumentParsing(unittest.TestCase): 7 def test_that_we_get_default_values(self): 8 args = parse([]) 9 10 for attr in DEFAULT_ARGS: 11 self.assertEqual(DEFAULT_ARGS[attr], getattr(args, attr)) 12 13 def test_that_we_load_arguments(self): 14 args = parse(['--interface', '10.0.0.25:80']) 15 self.assertEqual('10.0.0.25', args.control_address) 16 self.assertEqual(80, args.control_port) 17 18 args = parse(['--interface', '80']) 19 self.assertEqual(DEFAULT_ARGS['control_address'], args.control_address) 20 self.assertEqual(80, args.control_port) 21 22 args = parse(['--socket', '/tmp/my_socket']) 23 self.assertEqual('/tmp/my_socket', args.control_socket) 24 25 args = parse(['--help']) 26 self.assertEqual(True, args.print_help) 27 28 def test_examples(self): 29 args = parse(['-i', '1643']) 30 self.assertEqual(1643, args.control_port) 31 32 args = parse(['-s', '~/.tor/socket']) 33 self.assertEqual('~/.tor/socket', args.control_socket) 34 35 def test_that_we_reject_unrecognized_arguments(self): 36 self.assertRaises(ValueError, parse, ['--blarg', 'stuff']) 37 38 def test_that_we_reject_invalid_interfaces(self): 39 invalid_inputs = ( 40 '', 41 ' ', 42 'blarg', 43 '127.0.0.1', 44 '127.0.0.1:', 45 ':80', 46 '400.0.0.1:80', 47 '127.0.0.1:-5', 48 '127.0.0.1:500000', 49 ) 50 51 for invalid_input in invalid_inputs: 52 self.assertRaises(ValueError, parse, ['--interface', invalid_input]) 53 54 def test_run_with_command(self): 55 self.assertEqual('GETINFO version', parse(['--run', 'GETINFO version']).run_cmd) 56 57 def test_run_with_path(self): 58 self.assertEqual(__file__, parse(['--run', __file__]).run_path) 59 60 def test_get_help(self): 61 help_text = get_help() 62 self.assertTrue('Interactive interpreter for Tor.' in help_text) 63 self.assertTrue('change control interface from 127.0.0.1:default' in help_text) 64