telepathy-mission-control: Emulate the Aliasing interface a little more realistically

Simon McVittie smcv at kemper.freedesktop.org
Tue Oct 9 09:11:34 PDT 2012


Module: telepathy-mission-control
Branch: master
Commit: 2a1d4dce7e7bfa08e646485d36f4223c46915a33
URL:    http://cgit.freedesktop.org/telepathy/telepathy-mission-control/commit/?id=2a1d4dce7e7bfa08e646485d36f4223c46915a33

Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Fri Oct  5 17:53:34 2012 +0100

Emulate the Aliasing interface a little more realistically

---

 tests/twisted/account-manager/irc.py      |   14 +++++---------
 tests/twisted/account-manager/nickname.py |    4 +---
 tests/twisted/mctest.py                   |   26 +++++++++++++++++++++++++-
 3 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/tests/twisted/account-manager/irc.py b/tests/twisted/account-manager/irc.py
index eb79728..36bd283 100644
--- a/tests/twisted/account-manager/irc.py
+++ b/tests/twisted/account-manager/irc.py
@@ -49,7 +49,7 @@ def test(q, bus, mc):
     expect_after_connect = [
             EventPattern('dbus-method-call',
                 interface=cs.CONN_IFACE_ALIASING, method='GetAliases',
-                handled=False),
+                handled=True),
             EventPattern('dbus-method-call',
                 interface=cs.CONN_IFACE_ALIASING, method='SetAliases',
                 handled=False),
@@ -61,8 +61,6 @@ def test(q, bus, mc):
             self_ident=params['account'])
 
     assert get_aliases.args[0] == [ conn.self_handle ]
-    q.dbus_return(get_aliases.message, { conn.self_handle: 'brucewayne' },
-            signature='a{us}')
 
     assert set_aliases.args[0] == { conn.self_handle: 'BruceWayne' }
     q.dbus_return(set_aliases.message, signature='')
@@ -74,18 +72,17 @@ def test(q, bus, mc):
     # Another client changes our alias remotely, but because this is IRC,
     # that manifests itself as a handle change
     conn.change_self_ident('thebatman')
+    conn.change_self_alias('TheBatman')
 
     get_aliases, _ = q.expect_many(
         EventPattern('dbus-method-call', interface=cs.CONN_IFACE_ALIASING,
-            method='GetAliases', handled=False),
+            method='GetAliases', handled=True),
         EventPattern('dbus-signal', path=account.object_path,
             signal='AccountPropertyChanged', interface=cs.ACCOUNT,
             predicate=(lambda e:
                 e.args[0].get('NormalizedName') == 'thebatman')),
         )
     assert get_aliases.args[0] == [ conn.self_handle ]
-    q.dbus_return(get_aliases.message, { conn.self_handle: 'TheBatman' },
-            signature='a{us}')
     q.expect('dbus-signal', path=account.object_path,
             signal='AccountPropertyChanged', interface=cs.ACCOUNT,
             args=[{'Nickname': 'TheBatman'}])
@@ -107,20 +104,19 @@ def test(q, bus, mc):
         )
     assertEquals('BruceWayne', account_props.Get(cs.ACCOUNT, 'Nickname'))
     conn.change_self_ident('brucewayne')
+    conn.change_self_alias('BruceWayne')
     q.dbus_return(e.message, signature='')
 
     # In response to the self-handle change, we check our nickname again
     get_aliases, _ = q.expect_many(
         EventPattern('dbus-method-call', interface=cs.CONN_IFACE_ALIASING,
-            method='GetAliases', handled=False),
+            method='GetAliases', handled=True),
         EventPattern('dbus-signal', path=account.object_path,
             signal='AccountPropertyChanged', interface=cs.ACCOUNT,
             predicate=(lambda e:
                 e.args[0].get('NormalizedName') == 'brucewayne')),
         )
     assert get_aliases.args[0] == [ conn.self_handle ]
-    q.dbus_return(get_aliases.message, { conn.self_handle: 'BruceWayne' },
-            signature='a{us}')
 
     forbidden = [EventPattern('dbus-signal', signal='AccountPropertyChanged',
         predicate=lambda e: 'Nickname' in e.args[0])]
diff --git a/tests/twisted/account-manager/nickname.py b/tests/twisted/account-manager/nickname.py
index 6060f26..5ca8708 100644
--- a/tests/twisted/account-manager/nickname.py
+++ b/tests/twisted/account-manager/nickname.py
@@ -54,7 +54,7 @@ def test(q, bus, mc, trivial_nickname=False):
     expect_after_connect = [
             EventPattern('dbus-method-call',
                 interface=cs.CONN_IFACE_ALIASING, method='GetAliases',
-                handled=False),
+                handled=True),
             ]
     forbidden = []
 
@@ -74,8 +74,6 @@ def test(q, bus, mc, trivial_nickname=False):
 
     get_aliases = results[1]
     assert get_aliases.args[0] == [ conn.self_handle ]
-    q.dbus_return(get_aliases.message, { conn.self_handle: 'wjt at example.com' },
-            signature='a{us}')
 
     if trivial_nickname:
         assertLength(2, results)
diff --git a/tests/twisted/mctest.py b/tests/twisted/mctest.py
index ead5412..c1577cc 100644
--- a/tests/twisted/mctest.py
+++ b/tests/twisted/mctest.py
@@ -202,12 +202,17 @@ class SimulatedConnection(object):
         return self._last_handle
 
     def __init__(self, q, bus, cmname, protocol, account_part, self_ident,
+            self_alias=None,
             implement_get_interfaces=True, has_requests=True,
             has_presence=False, has_aliasing=False, has_avatars=False,
-            avatars_persist=True, extra_interfaces=[], has_hidden=False):
+            avatars_persist=True, extra_interfaces=[], has_hidden=False,
+            implement_get_aliases=True):
         self.q = q
         self.bus = bus
 
+        if self_alias is None:
+            self_alias = self_ident
+
         self.bus_name = '.'.join([cs.tp_name_prefix, 'Connection',
                 cmname, protocol.replace('-', '_'), account_part])
         self._bus_name_ref = dbus.service.BusName(self.bus_name, self.bus)
@@ -219,6 +224,7 @@ class SimulatedConnection(object):
         self.status = cs.CONN_STATUS_DISCONNECTED
         self.reason = cs.CONN_STATUS_CONNECTING
         self.self_ident = self_ident
+        self.self_alias = self_alias
         self.self_handle = self.ensure_handle(cs.HT_CONTACT, self_ident)
         self.channels = []
         self.has_requests = has_requests
@@ -313,6 +319,11 @@ class SimulatedConnection(object):
                     method='GetAliasFlags',
                     args=[])
 
+            if implement_get_aliases:
+                q.add_dbus_method_impl(self.GetAliases,
+                        path=self.object_path,
+                        interface=cs.CONN_IFACE_ALIASING, method='GetAliases')
+
         if has_avatars:
             q.add_dbus_method_impl(self.GetAvatarRequirements,
                     path=self.object_path, interface=cs.CONN_IFACE_AVATARS,
@@ -350,6 +361,12 @@ class SimulatedConnection(object):
         self.q.dbus_emit(self.object_path, cs.CONN, 'SelfHandleChanged',
                 self.self_handle, signature='u')
 
+    def change_self_alias(self, alias):
+        self.self_alias = alias
+        self.q.dbus_emit(self.object_path, cs.CONN_IFACE_ALIASING,
+                'AliasesChanged', [(self.self_handle, self.self_alias)],
+                signature='a(us)')
+
     def release_name(self):
         del self._bus_name_ref
 
@@ -368,6 +385,13 @@ class SimulatedConnection(object):
     def GetAliasFlags(self, e):
         self.q.dbus_return(e.message, 0, signature='u')
 
+    def GetAliases(self, e):
+        ret = dbus.Dictionary(signature='us')
+        if self.self_handle in e.args[0]:
+            ret[self.self_handle] = self.self_alias
+
+        self.q.dbus_return(e.message, ret, signature='a{us}')
+
     # mostly for the UI's benefit; for now hard-code the requirements from XMPP
     def GetAvatarRequirements(self, e):
         self.q.dbus_return(e.message, ['image/jpeg'], 0, 0, 96, 96, 8192,



More information about the telepathy-commits mailing list