888
888
class Test_string_to_delta(TestCaseWithAssertLogs):
889
def test_handles_basic_rfc3339(self):
889
# Just test basic RFC 3339 functionality here, the doc string for
890
# rfc3339_duration_to_delta() already has more comprehensive
891
# tests, which is run by doctest.
893
def test_rfc3339_zero_seconds(self):
890
894
self.assertEqual(string_to_delta("PT0S"),
891
895
datetime.timedelta())
897
def test_rfc3339_zero_days(self):
892
898
self.assertEqual(string_to_delta("P0D"),
893
899
datetime.timedelta())
901
def test_rfc3339_one_second(self):
894
902
self.assertEqual(string_to_delta("PT1S"),
895
903
datetime.timedelta(0, 1))
905
def test_rfc3339_two_hours(self):
896
906
self.assertEqual(string_to_delta("PT2H"),
897
907
datetime.timedelta(0, 7200))
1376
1386
testcase.assertEqual(dbus_interface,
1377
1387
dbus.PROPERTIES_IFACE)
1378
1388
self.attributes[propname] = value
1379
def Get(self, interface, propname, dbus_interface):
1380
testcase.assertEqual(interface, client_dbus_interface)
1381
testcase.assertEqual(dbus_interface,
1382
dbus.PROPERTIES_IFACE)
1383
return self.attributes[propname]
1384
1389
def Approve(self, approve, dbus_interface):
1385
1390
testcase.assertEqual(dbus_interface,
1386
1391
client_dbus_interface)
1459
1464
class TestBaseCommands(TestCommand):
1461
def test_is_enabled(self):
1466
def test_IsEnabled(self):
1462
1467
self.assertTrue(all(command.IsEnabled().is_enabled(client,
1464
1469
for client, properties
1465
1470
in self.clients.items()))
1467
def test_is_enabled_run_exits_successfully(self):
1472
def test_IsEnabled_run_exits_successfully(self):
1468
1473
with self.assertRaises(SystemExit) as e:
1469
1474
command.IsEnabled().run(self.one_client)
1470
1475
if e.exception.code is not None:
1473
1478
self.assertIsNone(e.exception.code)
1475
def test_is_enabled_run_exits_with_failure(self):
1480
def test_IsEnabled_run_exits_with_failure(self):
1476
1481
self.client.attributes["Enabled"] = dbus.Boolean(False)
1477
1482
with self.assertRaises(SystemExit) as e:
1478
1483
command.IsEnabled().run(self.one_client)
1482
1487
self.assertIsNotNone(e.exception.code)
1484
def test_approve(self):
1489
def test_Approve(self):
1485
1490
command.Approve().run(self.clients, self.bus)
1486
1491
for clientpath in self.clients:
1487
1492
client = self.bus.get_object(dbus_busname, clientpath)
1488
1493
self.assertIn(("Approve", (True, client_dbus_interface)),
1491
def test_deny(self):
1496
def test_Deny(self):
1492
1497
command.Deny().run(self.clients, self.bus)
1493
1498
for clientpath in self.clients:
1494
1499
client = self.bus.get_object(dbus_busname, clientpath)
1495
1500
self.assertIn(("Approve", (False, client_dbus_interface)),
1498
def test_remove(self):
1503
def test_Remove(self):
1499
1504
class MockMandos(object):
1500
1505
def __init__(self):
1501
1506
self.calls = []
1502
1507
def RemoveClient(self, dbus_path):
1503
1508
self.calls.append(("RemoveClient", (dbus_path,)))
1504
1509
mandos = MockMandos()
1505
super(TestBaseCommands, self).setUp()
1506
1510
command.Remove().run(self.clients, self.bus, mandos)
1507
self.assertEqual(len(mandos.calls), 2)
1508
1511
for clientpath in self.clients:
1509
1512
self.assertIn(("RemoveClient", (clientpath,)),
1696
1699
for clientpath in self.clients:
1697
1700
client = self.bus.get_object(dbus_busname, clientpath)
1698
1701
old_value = client.attributes[self.propname]
1699
self.assertNotIsInstance(old_value, self.Unique)
1700
1702
client.attributes[self.propname] = self.Unique()
1701
1703
self.run_command(value_to_set, self.clients)
1702
1704
for clientpath in self.clients: