[Telepathy-commits] [telepathy-gabble/master] Port roster/test-google-roster.py to new API

Simon McVittie simon.mcvittie at collabora.co.uk
Tue Aug 19 10:53:33 PDT 2008


20080722111322-53eee-3b77fc63cf7a15a5290dec06ad5dd220569dc46d.gz
---
 tests/twisted/roster/test-google-roster.py |  145 ++++++++++++++--------------
 1 files changed, 71 insertions(+), 74 deletions(-)

diff --git a/tests/twisted/roster/test-google-roster.py b/tests/twisted/roster/test-google-roster.py
index f31f59b..2fb87ab 100644
--- a/tests/twisted/roster/test-google-roster.py
+++ b/tests/twisted/roster/test-google-roster.py
@@ -8,8 +8,8 @@ import sys
 
 from twisted.words.xish import domish
 
-from servicetest import lazy, match
-from gabbletest import go, acknowledge_iq
+from servicetest import EventPattern
+from gabbletest import acknowledge_iq, exec_test
 
 from twisted.words.protocols.jabber.client import IQ
 
@@ -24,122 +24,119 @@ def make_set_roster_iq(stream, user, contact, state, ask):
     return iq
 
 
- at match('stream-iq', query_ns='jabber:iq:roster')
-def expect_roster_iq(event, data):
+def test(q, bus, conn, stream):
+    conn.Connect()
+
+    event = q.expect('stream-iq', query_ns='jabber:iq:roster')
     # send back empty roster
     event.stanza['type'] = 'result'
-    data['stream'].send(event.stanza)
-    return True
+    stream.send(event.stanza)
 
- at match('dbus-signal', signal='NewChannel')
-def expect_new_channel(event, data):
-    path, type, handle_type, handle, suppress_handler = event.args
+    while 1:
+        event = q.expect('dbus-signal', signal='NewChannel')
+        path, type, handle_type, handle, suppress_handler = event.args
 
-    if type != u'org.freedesktop.Telepathy.Channel.Type.ContactList':
-        return False
+        if type != u'org.freedesktop.Telepathy.Channel.Type.ContactList':
+            continue
 
-    chan_name = data['conn_iface'].InspectHandles(handle_type, [handle])[0]
+        chan_name = conn.InspectHandles(handle_type, [handle])[0]
 
-    if chan_name != 'subscribe':
-        return False
+        if chan_name == 'subscribe':
+            break
 
     # request subscription
-    chan = data['conn']._bus.get_object(data['conn'].bus_name, path)
+    chan = bus.get_object(conn.bus_name, path)
     group_iface = dbus.Interface(chan,
         u'org.freedesktop.Telepathy.Channel.Interface.Group')
     assert group_iface.GetMembers() == []
-    handle = data['conn_iface'].RequestHandles(1, ['bob at foo.com'])[0]
+    handle = conn.RequestHandles(1, ['bob at foo.com'])[0]
     group_iface.AddMembers([handle], '')
-    return True
 
- at match('stream-iq', iq_type='set', query_ns='jabber:iq:roster')
-def expect_roster_set_iq(event, data):
+    event = q.expect('stream-iq', iq_type='set', query_ns='jabber:iq:roster')
     item = event.query.firstChildElement()
     assert item["jid"] == 'bob at foo.com'
 
-    acknowledge_iq(data['stream'], event.stanza)
+    acknowledge_iq(stream, event.stanza)
 
     # send empty roster item
-    iq = make_set_roster_iq(data['stream'], 'test at localhost/Resource', item["jid"], "none", False)
-    data['stream'].send(iq)
-    return True
-
- at match('stream-presence')
-def expect_presence(event, data):
-    if event.stanza['type'] != 'subscribe':
-        return False
+    iq = make_set_roster_iq(stream, 'test at localhost/Resource',
+            item["jid"], "none", False)
+    stream.send(iq)
 
+    while 1:
+        event = q.expect('stream-presence')
+        if event.stanza['type'] == 'subscribe':
+            break
 
     # send pending roster item
-    iq = make_set_roster_iq(data['stream'], 'test at localhost/Resource', event.to, "none", True)
-    data['stream'].send(iq)
+    iq = make_set_roster_iq(stream, 'test at localhost/Resource', event.to,
+            "none", True)
+    stream.send(iq)
 
     # First error point, resetting from none+ask:subscribe to none, and back
-    # In the real world this triggers bogus 'subscribe authorization rejected' messages
+    # In the real world this triggers bogus 'subscribe authorization rejected'
+    # messages
 
     # send pending roster item
-    iq = make_set_roster_iq(data['stream'], 'test at localhost/Resource', event.to, "none", False)
-    data['stream'].send(iq)
+    iq = make_set_roster_iq(stream, 'test at localhost/Resource', event.to,
+            "none", False)
+    stream.send(iq)
 
     # send pending roster item
-    iq = make_set_roster_iq(data['stream'], 'test at localhost/Resource', event.to, "none", True)
-    data['stream'].send(iq)
+    iq = make_set_roster_iq(stream, 'test at localhost/Resource', event.to,
+            "none", True)
+    stream.send(iq)
 
     # send accepted roster item
-    iq = make_set_roster_iq(data['stream'], 'test at localhost/Resource', event.to, "to", False)
-    data['stream'].send(iq)
+    iq = make_set_roster_iq(stream, 'test at localhost/Resource', event.to,
+            "to", False)
+    stream.send(iq)
 
     presence = domish.Element(('jabber:client', 'presence'))
     presence['from'] = 'bob at foo.com'
     presence['type'] = 'subscribed'
-    data['stream'].send(presence)
+    stream.send(presence)
 
     # Second error point, demoting from to to none+ask:subscribe, and back
-    # In the real world this triggers multiple bogus 'subscribe authorization granted' messages
-    # instead of just one
+    # In the real world this triggers multiple bogus 'subscribe authorization
+    # granted' messages instead of just one
 
     # send pending roster item
-    iq = make_set_roster_iq(data['stream'], 'test at localhost/Resource', event.to, "none", True)
-    data['stream'].send(iq)
+    iq = make_set_roster_iq(stream, 'test at localhost/Resource', event.to,
+            "none", True)
+    stream.send(iq)
 
     # send accepted roster item
-    iq = make_set_roster_iq(data['stream'], 'test at localhost/Resource', event.to, "to", False)
-    data['stream'].send(iq)
+    iq = make_set_roster_iq(stream, 'test at localhost/Resource', event.to,
+            "to", False)
+    stream.send(iq)
 
-    return True
-
- at match('dbus-signal', signal='MembersChanged',
-    args=['', [2], [], [], [], 0, 0])
-def expect_members_changed1(event, data):
+    event = q.expect('dbus-signal', signal='MembersChanged',
+        args=['', [2], [], [], [], 0, 0])
     assert(event.path.endswith('/known'))
-    return True
 
- at match('dbus-signal', signal='MembersChanged',
-    args=['', [], [], [], [2], 0, 0])
-def expect_members_changed2(event, data):
+    event = q.expect('dbus-signal', signal='MembersChanged',
+        args=['', [], [], [], [2], 0, 0])
     assert(event.path.endswith('/subscribe'))
-    return True
 
- at match('dbus-signal', signal='MembersChanged',
-    args=['', [2], [], [], [], 0, 0])
-def expect_members_changed3(event, data):
+    event = q.expect('dbus-signal', signal='MembersChanged',
+        args=['', [2], [], [], [], 0, 0])
     assert(event.path.endswith('/subscribe'))
-    data['conn_iface'].Disconnect()
-    return True
-
- at lazy
- at match('dbus-signal', signal='StatusChanged', args=[2, 1])
-def expect_disconnected(event, data):
-    sys.exit(0)
-    return True
-
-# If there's an assertion here, that means we've got a few MembersChanged
-# signals too many (either from the first, or second point of error).
- at match('dbus-signal', signal='MembersChanged')
-def expect_members_changed_evil(event, data):
-    assert(False)
-    return True
 
-if __name__ == '__main__':
-    go()
+    conn.Disconnect()
 
+    while 1:
+        event = q.expect('dbus-signal')
+
+        if event.signal == 'StatusChanged' and event.args == [2, 1]:
+            # that's what we wanted
+            break
+
+        if event.signal == 'MembersChanged':
+            raise AssertionError("""
+If there's an assertion here, that means we've got a few MembersChanged
+signals too many (either from the first, or second point of error).
+""")
+
+if __name__ == '__main__':
+    exec_test(test)
-- 
1.5.6.3




More information about the Telepathy-commits mailing list