54
54
def __init__(self, **kwargs):
55
55
self._callbacks = {}
56
self.fake_name_owner = "foo"
58
57
def add_signal_receiver(self, method, dbus_interface, signal_name):
59
58
"""Add a signal receiver."""
63
62
"""Remove the signal receiver."""
64
63
del self._callbacks[(dbus_interface, signal_name)]
66
def get_name_owner(self, name):
67
"""Fake the response of the method."""
68
assert name == 'com.ubuntuone.SyncDaemon'
70
# will return a string, or raise an exception instance, never
72
# pylint: disable=W0701
73
if isinstance(self.fake_name_owner, str):
74
return self.fake_name_owner
76
raise self.fake_name_owner
78
65
def send_message_with_reply(self, *a, **k):
188
175
self.assertEqual(self._get_hooked('Status', 'RequestQueueRemoved'),
189
176
self.dbus._on_queue_removed)
191
def test_name_owner_changed(self):
192
"""Test name owner changed callback."""
193
self.assertEqual(self._get_hooked(None, 'NameOwnerChanged'),
194
self.dbus._on_name_owner_changed)
196
178
def test_folder_created_changed(self):
197
179
"""Test folder created changed callback."""
198
180
self.assertEqual(self._get_hooked('Folders', 'FolderCreated'),
241
223
@defer.inlineCallbacks
242
224
def test_is_sd_started_yes(self):
243
225
"""Test is SD started, yes."""
244
self.dbus._bus.fake_name_owner = 'some owner'
226
self.patch(dbusiface, 'is_already_running',
227
lambda: defer.succeed(True))
245
228
resp = yield self.dbus.is_sd_started()
246
229
self.assertTrue(resp)
248
231
@defer.inlineCallbacks
249
232
def test_is_sd_started_no(self):
250
233
"""Test is SD started, no."""
251
self.dbus._bus.fake_name_owner = dbus.exceptions.DBusException(
252
name='org.freedesktop.DBus.Error.NameHasNoOwner')
234
self.patch(dbusiface, 'is_already_running',
235
lambda: defer.succeed(False))
253
236
resp = yield self.dbus.is_sd_started()
254
237
self.assertFalse(resp)
348
331
self.assertEqual(connection, 'connection')
351
class DataProcessingNameOwnerTestCase(SafeTestCase):
352
"""Process Name Owner data before sending it to SyncDaemon."""
354
def test_name_owner_changed_no_syncdaemon(self):
355
"""Test name owner changed callback."""
356
self.dbus._on_name_owner_changed("foo", "bar", "baz")
357
self.get_msd_called(None)
359
def test_name_owner_changed_yes_syncdaemon_true_false(self):
360
"""Test name owner changed callback."""
361
self.dbus._on_name_owner_changed("com.ubuntuone.SyncDaemon", "T", "")
362
rcv, = self.get_msd_called("on_sd_name_owner_changed")
363
self.assertEqual(rcv, False)
365
def test_name_owner_changed_yes_syncdaemon_false_true(self):
366
"""Test name owner changed callback."""
367
self.dbus._on_name_owner_changed("com.ubuntuone.SyncDaemon", "", "T")
368
rcv, = self.get_msd_called("on_sd_name_owner_changed")
369
self.assertEqual(rcv, True)
372
334
class QueueChangedTestCase(SafeTestCase):
373
335
"""Process the signals for when the queue changes."""
844
806
def test_is_sd_started(self):
845
807
"""Test call to is_sd_started."""
808
self.patch(dbusiface, 'is_already_running',
809
lambda: defer.succeed(True))
846
810
self.dbus.is_sd_started()
847
811
self.assertTrue(self.handler.check_info(
848
812
"Checking if SD is started: True"))
890
854
m = "Received Queue removed: 'name' [1234] {'some': 'data'}"
891
855
self.assertTrue(self.handler.check_debug(m))
893
def test_name_owner_changed_other(self):
894
"""Test name owner changed callback, no SD."""
895
self.dbus._on_name_owner_changed("other", "", "T")
896
msg = "Received Name Owner changed"
897
self.assertFalse(self.handler.check_info(msg))
899
def test_name_owner_changed_syncdaemon(self):
900
"""Test name owner changed callback, SD value ok."""
901
self.dbus._on_name_owner_changed("com.ubuntuone.SyncDaemon", "", "T")
902
self.assertTrue(self.handler.check_info("Received Name Owner changed"))
903
self.assertTrue(self.handler.check_debug("Name Owner data: '' 'T'"))
905
def test_name_owner_changed_yes_syncdaemon_true_false(self):
906
"""Test name owner changed callback, SD value bad."""
907
self.dbus._on_name_owner_changed("com.ubuntuone.SyncDaemon", "F", "T")
908
self.assertTrue(self.handler.check_info("Received Name Owner changed"))
909
self.assertTrue(self.handler.check_debug("Name Owner data: 'F' 'T'"))
910
msg = "Name Owner invalid data: Same bool in old and new!"
911
self.assertTrue(self.handler.check_error(msg))
913
857
def test_folder_created_changed(self):
914
858
"""Test folder created changed callback."""
915
859
self.dbus._on_folder_created("foo")