345
346
self.main.fs.get_by_node_id("", 'node_id')
347
348
# helper method, pylint: disable-msg=C0111
348
def fake_create_share(node_id, user, name, access_level, marker):
349
def fake_create_share(node_id, user, name, access_level, marker, path):
349
350
self.assertIn(marker, self.vm.marker_share_map)
350
351
self.vm.handle_AQ_CREATE_SHARE_OK(share_id='share_id',
368
369
self.main.fs.get_by_node_id("", 'node_id')
370
371
# helper method, pylint: disable-msg=C0111
371
def fake_create_share(node_id, user, name, access_level, marker):
372
def fake_create_share(node_id, user, name, access_level, marker, path):
372
373
self.assertEquals('node_id', node_id)
373
374
self.assertEquals('fake_user', user)
374
375
self.assertEquals('shared_name', name)
392
393
self.main.fs.get_by_node_id("", 'node_id')
394
395
# helper method, pylint: disable-msg=C0111
395
def fake_create_share(node_id, user, name, access_level, marker):
396
def fake_create_share(node_id, user, name, access_level, marker, path):
396
397
self.vm.handle_AQ_CREATE_SHARE_ERROR(marker, 'a fake error')
398
399
self.main.action_q.create_share = fake_create_share
407
408
expected_share_id = uuid.uuid4()
409
410
# helper method, pylint: disable-msg=C0111
410
def fake_create_share(node_id, user, name, access_level, marker):
411
def fake_create_share(node_id, user, name, access_level, marker, path):
411
412
# some sanity checks
412
413
share = self.vm.marker_share_map[marker]
413
414
self.assertEquals(path, share.path)
1415
1416
@defer.inlineCallbacks
1417
def test_delete_volume_aq_args(self):
1418
"""Test that VolumeManager.delete_volume calls AQ.delete_volume."""
1419
suggested_path = "suggested_path"
1420
udf, volume = self._create_udf(uuid.uuid4(), 'udf_node_id',
1421
'~/' + suggested_path, subscribed=False)
1422
yield self.vm.add_udf(udf)
1423
d = defer.Deferred()
1424
# patch AQ.delete_volume
1425
def delete_volume(volume_id, path):
1426
"""Fake AQ.delete_volume."""
1427
if volume_id == udf.volume_id and path == udf.path:
1430
d.errback(Exception(""))
1431
self.patch(self.main.action_q, 'delete_volume', delete_volume)
1432
with environ('HOME', self.home_dir):
1433
self.vm.delete_volume(udf.volume_id)
1436
@defer.inlineCallbacks
1416
1437
def test_subscribe_udf(self):
1417
1438
"""Test VolumeManager.subscribe_udf method."""
1418
1439
# create and add a UDF
1755
1776
yield self.vm.add_udf(udf)
1756
1777
d = defer.Deferred()
1757
1778
# patch AQ.delete_volume
1758
def delete_volume(path):
1779
def delete_volume(vol_id, path):
1759
1780
"""Fake delete_volume"""
1760
self.main.event_q.push("AQ_DELETE_VOLUME_OK", volume_id=udf.volume_id)
1781
self.main.event_q.push("AQ_DELETE_VOLUME_OK", volume_id=vol_id)
1761
1782
self.main.action_q.delete_volume = delete_volume
1762
1783
def check(info):
1763
1784
"""Check the udf attributes."""
1782
1803
yield self.vm.add_udf(udf)
1783
1804
d = defer.Deferred()
1784
1805
# patch AQ.delete_volume
1785
def delete_volume(path):
1806
def delete_volume(vol_id, path):
1786
1807
"""Fake delete_volume"""
1787
1808
self.main.event_q.push("AQ_DELETE_VOLUME_ERROR",
1788
volume_id=udf.volume_id, error="ERROR!")
1809
volume_id=vol_id, error="ERROR!")
1789
1810
self.main.action_q.delete_volume = delete_volume
1790
1811
def check(info):
1791
1812
"""Check the udf attributes."""
1808
1829
self.assertTrue(self.handler.check_warning("missing volume id"))
1810
1831
@defer.inlineCallbacks
1811
def _test_handle_SV_VOLUME_CREATED(self, auto_subscribe):
1812
"""Test for handle_SV_VOLUME_CREATED."""
1813
user_conf = config.get_user_config()
1814
user_conf.set_udf_autosubscribe(auto_subscribe)
1832
def test_handle_SV_VOLUME_CREATED_share(self):
1833
"""Test for handle_SV_VOLUME_CREATED with shares."""
1815
1834
# start the test
1816
udf_id = uuid.uuid4()
1817
udf_volume = volumes.UDFVolume(udf_id, 'udf_uuid', None, 10, u'~/ñoño')
1818
1835
share_id = uuid.uuid4()
1819
share_volume = volumes.ShareVolume(share_id, 'fake_share_uuid', None,
1820
10, 'to_me', u'ñoño',
1821
'username', u'visible_username',
1836
share_volume = volumes.ShareVolume(
1837
share_id, 'fake_share_uuid', None, 10, 'to_me', u'ñoño',
1838
'username', u'visible_username',
1839
False, # this is how the protocol send it
1823
1841
# initialize the the root
1824
1842
self.vm._got_root('root_uuid')
1826
d = defer.Deferred()
1827
self._listen_for('VM_UDF_CREATED', d.callback)
1828
rescan_cb = defer.Deferred()
1829
self.patch(self.main.action_q, 'rescan_from_scratch', rescan_cb.callback)
1831
with environ('HOME', self.home_dir):
1832
self.vm.handle_SV_VOLUME_CREATED(udf_volume)
1835
self.assertEquals(udf.volume_id, str(udf_id))
1836
self.assertIn(str(udf_id), self.vm.udfs)
1838
self.assertTrue(udf.subscribed)
1839
self.assertTrue(os.path.exists(udf.path))
1840
# check that rescan_from_scratch is called
1841
vol_id = yield rescan_cb
1842
self.assertEqual(vol_id, udf.volume_id)
1844
self.assertFalse(udf.subscribed)
1845
self.assertFalse(os.path.exists(udf.path))
1846
# subscribe a new listener
1847
1843
d = defer.Deferred()
1848
1844
self._listen_for('VM_SHARE_CREATED', d.callback)
1849
1845
rescan_cb = defer.Deferred()
1860
1856
vol_id = yield rescan_cb
1861
1857
self.assertEqual(vol_id, share.volume_id)
1863
def test_handle_SV_VOLUME_CREATED_subscribe(self):
1859
@defer.inlineCallbacks
1860
def _test_handle_SV_VOLUME_CREATED_udf(self, auto_subscribe):
1861
"""Test for handle_SV_VOLUME_CREATED with udfs."""
1862
user_conf = config.get_user_config()
1863
user_conf.set_udf_autosubscribe(auto_subscribe)
1865
udf_id = uuid.uuid4()
1866
udf_volume = volumes.UDFVolume(udf_id, 'udf_uuid', None, 10, u'~/ñoño')
1867
# initialize the the root
1868
self.vm._got_root('root_uuid')
1870
d = defer.Deferred()
1871
self._listen_for('VM_UDF_CREATED', d.callback)
1872
rescan_cb = defer.Deferred()
1873
self.patch(self.main.action_q, 'rescan_from_scratch', rescan_cb.callback)
1875
with environ('HOME', self.home_dir):
1876
self.vm.handle_SV_VOLUME_CREATED(udf_volume)
1879
self.assertEquals(udf.volume_id, str(udf_id))
1880
self.assertIn(str(udf_id), self.vm.udfs)
1882
self.assertTrue(udf.subscribed)
1883
self.assertTrue(os.path.exists(udf.path))
1884
# check that rescan_from_scratch is called
1885
vol_id = yield rescan_cb
1886
self.assertEqual(vol_id, udf.volume_id)
1888
self.assertFalse(udf.subscribed)
1889
self.assertFalse(os.path.exists(udf.path))
1891
def test_handle_SV_VOLUME_CREATED_udf_subscribe(self):
1864
1892
"""Test SV_VOLUME_CREATED with udf auto_subscribe """
1865
return self._test_handle_SV_VOLUME_CREATED(True)
1893
return self._test_handle_SV_VOLUME_CREATED_udf(True)
1867
def test_handle_SV_VOLUME_CREATED_no_subscribe(self):
1895
def test_handle_SV_VOLUME_CREATED_udf_no_subscribe(self):
1868
1896
"""Test SV_VOLUME_CREATED without udf auto_subscribe """
1869
return self._test_handle_SV_VOLUME_CREATED(False)
1897
return self._test_handle_SV_VOLUME_CREATED_udf(False)
1871
1899
@defer.inlineCallbacks
1872
1900
def test_handle_SV_VOLUME_DELETED(self):
3096
3124
def test_get_key(self):
3097
3125
"""Test for the _get_key method."""
3098
self.assertEqual(self.shelf.key, self.shelf._get_key(request.ROOT))
3126
self.assertEqual(self.shelf._root_key,
3127
self.shelf._get_key(request.ROOT))
3099
3128
self.assertEqual('foo', self.shelf._get_key('foo'))