telepathy-mission-control: nickname test: verify that a trivial nickname is not set on connect

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


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

Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Fri Oct  5 12:42:39 2012 +0100

nickname test: verify that a trivial nickname is not set on connect

---

 tests/twisted/account-manager/nickname.py |   84 ++++++++++++++++++++++------
 tests/twisted/mctest.py                   |    5 +-
 2 files changed, 69 insertions(+), 20 deletions(-)

diff --git a/tests/twisted/account-manager/nickname.py b/tests/twisted/account-manager/nickname.py
index 8e2fe79..6060f26 100644
--- a/tests/twisted/account-manager/nickname.py
+++ b/tests/twisted/account-manager/nickname.py
@@ -20,12 +20,12 @@ import dbus
 import dbus
 import dbus.service
 
-from servicetest import EventPattern, tp_name_prefix, tp_path_prefix, \
-        call_async
+from servicetest import (EventPattern, tp_name_prefix, tp_path_prefix,
+        call_async, assertEquals, assertLength, sync_dbus)
 from mctest import exec_test, create_fakecm_account, enable_fakecm_account
 import constants as cs
 
-def test(q, bus, mc):
+def test(q, bus, mc, trivial_nickname=False):
     params = dbus.Dictionary({"account": "wjt at example.com",
         "password": "secrecy"}, signature='sv')
     (cm_name_ref, account) = create_fakecm_account(q, bus, mc, params)
@@ -33,36 +33,61 @@ def test(q, bus, mc):
     account_iface = dbus.Interface(account, cs.ACCOUNT)
     account_props = dbus.Interface(account, cs.PROPERTIES_IFACE)
 
+    if trivial_nickname:
+        nickname = params['account']
+    else:
+        nickname = 'resiak'
+
     call_async(q, account_props, 'Set', cs.ACCOUNT, 'Nickname',
-            'resiak')
+            nickname)
     q.expect_many(
         EventPattern('dbus-signal',
             path=account.object_path,
             signal='AccountPropertyChanged',
             interface=cs.ACCOUNT,
-            args=[{'Nickname': 'resiak'}]),
+            args=[{'Nickname': nickname}]),
         EventPattern('dbus-return', method='Set'),
         )
-    assert account_props.Get(cs.ACCOUNT, 'Nickname') == 'resiak'
+    assertEquals(nickname, account_props.Get(cs.ACCOUNT, 'Nickname'))
 
     # OK, let's go online
-    conn, get_aliases, set_aliases = enable_fakecm_account(q, bus, mc,
+    expect_after_connect = [
+            EventPattern('dbus-method-call',
+                interface=cs.CONN_IFACE_ALIASING, method='GetAliases',
+                handled=False),
+            ]
+    forbidden = []
+
+    if trivial_nickname:
+        forbidden.append(EventPattern('dbus-method-call', method='SetAliases'))
+        q.forbid_events(forbidden)
+    else:
+        expect_after_connect.append(EventPattern('dbus-method-call',
+            interface=cs.CONN_IFACE_ALIASING, method='SetAliases',
+            handled=False))
+
+    results = enable_fakecm_account(q, bus, mc,
             account, params, has_aliasing=True,
-            expect_after_connect=[
-                EventPattern('dbus-method-call',
-                    interface=cs.CONN_IFACE_ALIASING, method='GetAliases',
-                    handled=False),
-                EventPattern('dbus-method-call',
-                    interface=cs.CONN_IFACE_ALIASING, method='SetAliases',
-                    handled=False),
-                ])
+            expect_after_connect=expect_after_connect,
+            self_ident=params['account'])
+    conn = results[0]
 
+    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}')
 
-    assert set_aliases.args[0] == { conn.self_handle: 'resiak' }
-    q.dbus_return(set_aliases.message, signature='')
+    if trivial_nickname:
+        assertLength(2, results)
+    else:
+        assertLength(3, results)
+        set_aliases = results[2]
+        assert set_aliases.args[0] == { conn.self_handle: 'resiak' }
+        q.dbus_return(set_aliases.message, signature='')
+
+    if forbidden:
+        sync_dbus(bus, q, mc)
+        q.unforbid_events(forbidden)
 
     # Change alias after going online
     call_async(q, account_props, 'Set', cs.ACCOUNT, 'Nickname',
@@ -89,5 +114,28 @@ def test(q, bus, mc):
             signal='AccountPropertyChanged', interface=cs.ACCOUNT,
             args=[{'Nickname': 'wjt'}])
 
+    # If we set a trivial nickname while connected, MC does use it
+    nickname = params['account']
+    call_async(q, account_props, 'Set', cs.ACCOUNT, 'Nickname',
+            nickname)
+    _, _, e = q.expect_many(
+        EventPattern('dbus-signal',
+            path=account.object_path,
+            signal='AccountPropertyChanged',
+            interface=cs.ACCOUNT,
+            args=[{'Nickname': nickname}]),
+        EventPattern('dbus-return', method='Set'),
+        EventPattern('dbus-method-call',
+            interface=cs.CONN_IFACE_ALIASING, method='SetAliases',
+            args=[{ conn.self_handle: params['account'] }],
+            handled=False)
+        )
+    assertEquals(nickname, account_props.Get(cs.ACCOUNT, 'Nickname'))
+    q.dbus_return(e.message, signature='')
+
+def test_both(q, bus, mc):
+    test(q, bus, mc, trivial_nickname=False)
+    test(q, bus, mc, trivial_nickname=True)
+
 if __name__ == '__main__':
-    exec_test(test, {})
+    exec_test(test_both, {})
diff --git a/tests/twisted/mctest.py b/tests/twisted/mctest.py
index e6eff4a..68dde0d 100644
--- a/tests/twisted/mctest.py
+++ b/tests/twisted/mctest.py
@@ -947,7 +947,8 @@ def expect_fakecm_connection(q, bus, mc, account, expected_params,
         has_avatars=False, avatars_persist=True,
         extra_interfaces=[],
         expect_before_connect=(), expect_after_connect=(),
-        has_hidden=False):
+        has_hidden=False,
+        self_ident='myself'):
     # make (safely) mutable copies
     expect_before_connect = list(expect_before_connect)
     expect_after_connect = list(expect_after_connect)
@@ -961,7 +962,7 @@ def expect_fakecm_connection(q, bus, mc, account, expected_params,
 
     conn = SimulatedConnection(q, bus, 'fakecm', 'fakeprotocol',
                                account.object_path.split('/')[-1],
-            'myself', has_requests=has_requests, has_presence=has_presence,
+            self_ident, has_requests=has_requests, has_presence=has_presence,
             has_aliasing=has_aliasing, has_avatars=has_avatars,
             avatars_persist=avatars_persist, extra_interfaces=extra_interfaces,
             has_hidden=has_hidden)



More information about the telepathy-commits mailing list