571
571
for key, subval in value.items()}
574
def set_client_property(self, objectpath, key, value):
576
if not isinstance(value, bytes):
577
value = value.encode("utf-8")
578
value = self.dbus_python.ByteArray(value)
579
return self.set_property(self.busname, objectpath,
580
self.client_interface, key,
583
575
class SilenceLogger(object):
584
576
"Simple context manager to silence a particular logger"
1321
1313
def get_object(busname, objectpath):
1322
1314
DBusObject = collections.namedtuple(
1323
"DBusObject", ("methodname", "Set"))
1315
"DBusObject", ("methodname",))
1324
1316
def method(*args, **kwargs):
1325
1317
self.assertEqual({"dbus_interface":
1328
1320
return func(*args)
1329
def set_property(interface, key, value,
1330
dbus_interface=None):
1332
"org.freedesktop.DBus.Properties",
1334
self.assertEqual("Secret", key)
1335
return func(interface, key, value,
1336
dbus_interface=dbus_interface)
1337
return DBusObject(methodname=method,
1321
return DBusObject(methodname=method)
1339
1322
class Boolean(object):
1340
1323
def __init__(self, value):
1341
1324
self.value = bool(value)
1531
1512
# Make sure the dbus logger was suppressed
1532
1513
self.assertEqual(0, counting_handler.count)
1534
def test_Set_Secret_sends_bytearray(self):
1536
def func(*args, **kwargs):
1537
ret[0] = (args, kwargs)
1538
mock_dbus_python = self.MockDBusPython_func(func)
1539
bus = dbus_python_adapter.SystemBus(mock_dbus_python)
1540
bus.set_client_property("objectpath", "Secret", "value")
1541
expected_call = (("se.recompile.Mandos.Client", "Secret",
1542
mock_dbus_python.ByteArray(b"value")),
1544
"org.freedesktop.DBus.Properties"})
1545
self.assertEqual(expected_call, ret[0])
1546
if sys.version_info.major == 2:
1547
self.assertIsInstance(ret[0][0][-1],
1548
mock_dbus_python.ByteArray)
1550
1515
def test_get_object_converts_to_correct_exception(self):
1551
1516
bus = dbus_python_adapter.SystemBus(
1552
1517
self.fake_dbus_python_raises_exception_on_connect)
1780
1745
self.assert_command_from_args(["--is-enabled", "client"],
1781
1746
command.IsEnabled)
1783
def assert_command_from_args(self, args, command_cls, length=1,
1784
clients=None, **cmd_attrs):
1748
def assert_command_from_args(self, args, command_cls,
1785
1750
"""Assert that parsing ARGS should result in an instance of
1786
1751
COMMAND_CLS with (optionally) all supplied attributes (CMD_ATTRS)."""
1787
1752
options = self.parser.parse_args(args)
1788
1753
check_option_syntax(self.parser, options)
1789
1754
commands = commands_from_options(options)
1790
self.assertEqual(length, len(commands))
1791
for command in commands:
1792
if isinstance(command, command_cls):
1795
self.assertIsInstance(command, command_cls)
1796
if clients is not None:
1797
self.assertEqual(clients, options.client)
1755
self.assertEqual(1, len(commands))
1756
command = commands[0]
1757
self.assertIsInstance(command, command_cls)
1798
1758
for key, value in cmd_attrs.items():
1799
1759
self.assertEqual(value, getattr(command, key))
1801
def assert_commands_from_args(self, args, commands, clients=None):
1802
for cmd in commands:
1803
self.assert_command_from_args(args, cmd,
1804
length=len(commands),
1807
1761
def test_is_enabled_short(self):
1808
1762
self.assert_command_from_args(["-V", "client"],
1809
1763
command.IsEnabled)
2003
def test_manual_page_example_1(self):
2004
self.assert_command_from_args("--verbose".split(),
2009
def test_manual_page_example_2(self):
2010
self.assert_command_from_args(
2011
"--verbose foo1.example.org foo2.example.org".split(),
2012
command.PrintTable, clients=["foo1.example.org",
2013
"foo2.example.org"],
2016
def test_manual_page_example_3(self):
2017
self.assert_command_from_args("--enable --all".split(),
2021
def test_manual_page_example_4(self):
2022
self.assert_commands_from_args(
2023
("--timeout=PT5M --interval=PT1M foo1.example.org"
2024
" foo2.example.org").split(),
2025
[command.SetTimeout, command.SetInterval],
2026
clients=["foo1.example.org", "foo2.example.org"])
2028
def test_manual_page_example_5(self):
2029
self.assert_command_from_args("--approve --all".split(),
2034
1957
class TestCommand(unittest.TestCase):
2035
1958
"""Abstract class for tests of command classes"""