1576
1576
d.callback(True)
1577
1577
match = self.bus.add_signal_receiver(deleted_handler,
1578
1578
signal_name='FolderDeleted')
1579
self.signal_receivers.add(match)
1579
1580
def check_deleted(info):
1580
1581
"""the callback"""
1581
1582
self.assertNotIn(udf.id, self.main.vm.udfs)
1582
1583
self.assertRaises(KeyError, self.main.fs.get_by_path, udf.path)
1583
1584
self.assertRaises(KeyError, self.main.vm.get_volume, udf.id)
1584
self.signal_receivers.add(match)
1585
1585
self.folders_client.call_method('delete', udf.id,
1586
1586
reply_handler=check_deleted,
1587
1587
error_handler=self.error_handler)
1705
class ShareTests(DBusTwistedTestCase):
1706
"""Share specific tests"""
1708
def test_delete_share(self):
1709
"""Test for Shares.delete_share."""
1710
share_path = os.path.join(self.main.shares_dir, 'share')
1711
share = Share(path=share_path, share_id='share_id',
1712
subtree='node_id', accepted=True)
1713
self.main.vm.add_share(share)
1714
d = defer.Deferred()
1715
def delete_volume(volume_id):
1716
"""Fake delete_volume"""
1717
self.main.event_q.push("AQ_DELETE_VOLUME_OK", volume_id=volume_id)
1718
self.main.action_q.delete_volume = delete_volume
1719
def deleted_handler(info):
1720
"""FolderDeleted handler."""
1721
self.assertRaises(KeyError, self.main.fs.get_by_path,
1722
info['path'].decode('utf-8'))
1723
self.assertRaises(KeyError, self.main.vm.get_volume, info['id'])
1725
match = self.bus.add_signal_receiver(deleted_handler,
1726
signal_name='ShareDeleted')
1727
self.signal_receivers.add(match)
1728
def check_deleted(info):
1730
self.assertNotIn(share.id, self.main.vm.shares)
1731
self.assertRaises(KeyError, self.main.fs.get_by_path, share.path)
1732
self.assertRaises(KeyError, self.main.vm.get_volume, share.id)
1733
client = DBusClient(self.bus, '/shares', DBUS_IFACE_SHARES_NAME)
1734
client.call_method('delete_share', share.id,
1735
reply_handler=check_deleted,
1736
error_handler=self.error_handler)
1739
def test_delete_share_error_signal(self):
1740
"""Test for Shares.delete_share with an error."""
1741
share_path = os.path.join(self.main.shares_dir, 'share')
1742
share = Share(path=share_path, share_id='share_id',
1743
subtree='node_id', accepted=True)
1744
self.main.vm.add_share(share)
1745
d = defer.Deferred()
1746
# patch delete_volume to fail
1747
def delete_volume(volume_id):
1748
"""Fake delete_volume"""
1749
self.main.event_q.push("AQ_DELETE_VOLUME_ERROR",
1750
volume_id=volume_id, error="I'm broken")
1751
self.main.action_q.delete_volume = delete_volume
1752
def deleted_error_handler(info, error):
1753
"""FolderDeleteError handler"""
1754
self.assertEquals(info['id'], share.id)
1755
self.assertEquals(error, "I'm broken")
1757
match = self.bus.add_signal_receiver(deleted_error_handler,
1758
signal_name='ShareDeleteError')
1759
self.signal_receivers.add(match)
1760
client = DBusClient(self.bus, '/shares', DBUS_IFACE_SHARES_NAME)
1761
client.call_method('delete_share', share.id,
1762
reply_handler=lambda *args: None,
1763
error_handler=self.error_handler)
1705
1767
def test_suite():
1706
1768
# pylint: disable-msg=C0111
1707
1769
return unittest.TestLoader().loadTestsFromName(__name__)