[Telepathy-commits] [telepathy-gabble/master] olpc-muc-prop-change.py: port to new test API

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Tue Aug 19 10:52:10 PDT 2008


20080502101847-7fe3f-bf9fc52258e04de34ba8c196b66bd6e5087d6ce6.gz
---
 tests/twisted/olpc/olpc-muc-prop-change.py |  245 ++++++++++------------------
 1 files changed, 87 insertions(+), 158 deletions(-)

diff --git a/tests/twisted/olpc/olpc-muc-prop-change.py b/tests/twisted/olpc/olpc-muc-prop-change.py
index 552e3d8..da327ba 100644
--- a/tests/twisted/olpc/olpc-muc-prop-change.py
+++ b/tests/twisted/olpc/olpc-muc-prop-change.py
@@ -6,18 +6,22 @@ import dbus
 
 from twisted.words.xish import domish, xpath
 
-from gabbletest import go, make_result_iq
-from servicetest import call_async, lazy, match
+from gabbletest import go, make_result_iq, exec_test, acknowledge_iq
+from servicetest import call_async, EventPattern
 
- at match('dbus-signal', signal='StatusChanged', args=[0, 1])
-def expect_connected(event, data):
+def test(q, bus, conn, stream):
+    conn.Connect()
 
-    data['buddy_iface'] = dbus.Interface(data['conn'],
-            'org.laptop.Telepathy.BuddyInfo')
-    data['act_prop_iface'] = dbus.Interface(data['conn'],
-            'org.laptop.Telepathy.ActivityProperties')
-    data['bob_handle'] = data['conn_iface'].RequestHandles(1,
-        ['bob at localhost'])[0]
+    _, iq_event = q.expect_many(
+        EventPattern('dbus-signal', signal='StatusChanged', args=[0, 1]),
+        EventPattern('stream-iq', to=None, query_ns='vcard-temp',
+            query_name='vCard'))
+
+    acknowledge_iq(stream, iq_event.stanza)
+
+    buddy_iface = dbus.Interface(conn, 'org.laptop.Telepathy.BuddyInfo')
+    act_prop_iface = dbus.Interface(conn, 'org.laptop.Telepathy.ActivityProperties')
+    bob_handle = conn.RequestHandles(1, ['bob at localhost'])[0]
 
     # Bob invites us to a chatroom, pre-seeding properties
     message = domish.Element(('jabber:client', 'message'))
@@ -36,7 +40,7 @@ def expect_connected(event, data):
     property['name'] = 'private'
     property.addContent('1')
 
-    data['stream'].send(message)
+    stream.send(message)
 
     message = domish.Element((None, 'message'))
     message['from'] = 'chat at conf.localhost'
@@ -47,76 +51,58 @@ def expect_connected(event, data):
     reason = invite.addElement((None, 'reason'))
     reason.addContent('No good reason')
 
-    data['stream'].send(message)
+    stream.send(message)
 
-    return True
+    event = q.expect('dbus-signal', signal='NewChannel')
 
- at match('dbus-signal', signal='NewChannel')
-def expect_text_channel(event, data):
     if event.args[1] != 'org.freedesktop.Telepathy.Channel.Type.Text':
         return False
 
     assert event.args[2] == 2   # handle type
     assert event.args[3] == 1   # handle
-    data['room_handle'] = 1
+    room_handle = 1
 
-    bus = data['conn']._bus
-    data['text_chan'] = bus.get_object(
-        data['conn'].bus_name, event.args[0])
-    data['chan_iface'] = dbus.Interface(data['text_chan'],
-        'org.freedesktop.Telepathy.Channel')
-    data['group_iface'] = dbus.Interface(data['text_chan'],
-        'org.freedesktop.Telepathy.Channel.Interface.Group')
+    text_chan = bus.get_object(conn.bus_name, event.args[0])
+    chan_iface = dbus.Interface(text_chan, 'org.freedesktop.Telepathy.Channel')
+    group_iface = dbus.Interface(text_chan, 'org.freedesktop.Telepathy.Channel.Interface.Group')
 
-    members = data['group_iface'].GetAllMembers()[0]
-    local_pending = data['group_iface'].GetAllMembers()[1]
-    remote_pending = data['group_iface'].GetAllMembers()[2]
+    members = group_iface.GetAllMembers()[0]
+    local_pending = group_iface.GetAllMembers()[1]
+    remote_pending = group_iface.GetAllMembers()[2]
 
     assert len(members) == 1
-    assert data['conn_iface'].InspectHandles(1, members)[0] == 'bob at localhost'
-    data['bob_handle'] = members[0]
+    assert conn.InspectHandles(1, members)[0] == 'bob at localhost'
+    bob_handle = members[0]
     assert len(local_pending) == 1
     # FIXME: the username-part-is-nickname assumption
-    assert data['conn_iface'].InspectHandles(1, local_pending)[0] == \
+    assert conn.InspectHandles(1, local_pending)[0] == \
             'chat at conf.localhost/test'
     assert len(remote_pending) == 0
 
-    data['room_self_handle'] = data['group_iface'].GetSelfHandle()
-    assert data['room_self_handle'] == local_pending[0]
+    room_self_handle = group_iface.GetSelfHandle()
+    assert room_self_handle == local_pending[0]
 
     # by now, we should have picked up the extra activity properties
-    data['buddy_iface'] = dbus.Interface(data['conn'],
-            'org.laptop.Telepathy.BuddyInfo')
-    call_async(data['test'], data['buddy_iface'], 'GetActivities',
-        data['bob_handle'])
+    buddy_iface = dbus.Interface(conn, 'org.laptop.Telepathy.BuddyInfo')
+    call_async(q, buddy_iface, 'GetActivities', bob_handle)
 
-    return True
-
- at match('stream-iq', iq_type='get', to='bob at localhost')
-def expect_get_bob_activities_iq_get_again(event, data):
+    event = q.expect('stream-iq', iq_type='get', to='bob at localhost')
     # Bob still has no (public) activities
     event.stanza['type'] = 'result'
     event.stanza['to'] = 'test at localhost'
     event.stanza['from'] = 'bob at localhost'
-    data['stream'].send(event.stanza)
-    return True
+    stream.send(event.stanza)
 
- at lazy
- at match('dbus-return', method='GetActivities')
-def expect_get_bob_activities_return_again(event, data):
-    assert event.value == ([('foo_id', data['room_handle'])],)
-    call_async(data['test'], data['act_prop_iface'], 'GetProperties',
-        data['room_handle'])
+    event = q.expect('dbus-return', method='GetActivities')
 
-    return True
+    assert event.value == ([('foo_id', room_handle)],)
 
- at lazy
- at match('dbus-return', method='GetProperties')
-def expect_get_properties_return(event, data):
-    assert event.value == ({'title': 'From the invitation', 'private': True},)
+    props = act_prop_iface.GetProperties(room_handle)
+    assert len(props) == 2
+    assert props['title'] == 'From the invitation'
+    assert props['private'] == True
 
     # Now Bob changes the properties
-
     message = domish.Element(('jabber:client', 'message'))
     message['from'] = 'bob at localhost'
     message['to'] = 'test at localhost'
@@ -133,35 +119,24 @@ def expect_get_properties_return(event, data):
     property['name'] = 'private'
     property.addContent('0')
 
-    data['stream'].send(message)
+    stream.send(message)
 
-    return True
+    event = q.expect('dbus-signal', signal='ActivityPropertiesChanged')
 
- at lazy
- at match('dbus-signal', signal='ActivityPropertiesChanged')
-def expect_activity_properties_changed(event, data):
-    assert event.args == [data['room_handle'], {'title': 'Mushroom, mushroom',
+    assert event.args == [room_handle, {'title': 'Mushroom, mushroom',
         'private': False }]
-    assert data['act_prop_iface'].GetProperties(data['room_handle']) == \
+    assert act_prop_iface.GetProperties(room_handle) == \
             event.args[1]
 
     # OK, now accept the invitation
-    call_async(data['test'], data['group_iface'], 'AddMembers',
-        [data['room_self_handle']], 'Oh, OK then')
-
-    return True
-
- at lazy
- at match('dbus-signal', signal='MembersChanged')
-def expect_add_myself_into_remote_pending(event, data):
-    assert event.args == ['', [], [data['bob_handle']], [],
-            [data['room_self_handle']], 0,
-            data['room_self_handle']]
-    return True
-
- at lazy
- at match('stream-presence', to='chat at conf.localhost/test')
-def expect_presence(event, data):
+    call_async(q, group_iface, 'AddMembers', [room_self_handle], 'Oh, OK then')
+
+    q.expect('stream-presence', to='chat at conf.localhost/test')
+
+    event = q.expect('dbus-signal', signal='MembersChanged')
+    assert event.args == ['', [], [bob_handle], [],
+            [room_self_handle], 0, room_self_handle]
+
     # Send presence for own membership of room.
     presence = domish.Element((None, 'presence'))
     presence['from'] = 'chat at conf.localhost/test'
@@ -169,33 +144,23 @@ def expect_presence(event, data):
     item = x.addElement('item')
     item['affiliation'] = 'owner'
     item['role'] = 'moderator'
-    data['stream'].send(presence)
-    return True
+    stream.send(presence)
 
- at match('dbus-return', method='AddMembers')
-def expect_add_myself_success(event, data):
-    return True
+    q.expect('dbus-return', method='AddMembers')
 
- at match('dbus-signal', signal='MembersChanged')
-def expect_members_changed2(event, data):
-    assert event.args == ['', [data['room_self_handle']], [], [],
-            [], 0, 0]
+    event = q.expect('dbus-signal', signal='MembersChanged')
+    assert event.args == ['', [room_self_handle], [], [], [], 0, 0]
 
-    call_async(data['test'], data['buddy_iface'], 'SetActivities',
-        [('foo_id', data['room_handle'])])
-    return True
+    call_async(q, buddy_iface, 'SetActivities', [('foo_id', room_handle)])
 
- at match('stream-iq', iq_type='set')
-def expect_activities_publication(event, data):
+    event = q.expect('stream-iq', iq_type='set')
     # Now that it's not private, it'll go in my PEP
     event.stanza['type'] = 'result'
     event.stanza['to'] = 'test at localhost'
     event.stanza['from'] = 'test at localhost'
-    data['stream'].send(event.stanza)
-    return True
+    stream.send(event.stanza)
 
- at match('dbus-return', method='SetActivities')
-def expect_set_activities_success(event, data):
+    q.expect('dbus-return', method='SetActivities')
 
     # Bob changes the properties and tells the room he's done so
     message = domish.Element(('jabber:client', 'message'))
@@ -213,13 +178,9 @@ def expect_set_activities_success(event, data):
     property['name'] = 'private'
     property.addContent('0')
 
-    data['stream'].send(message)
-
-    return True
-
- at match('stream-iq', iq_type='set')
-def expect_bob_activity_properties_copied_to_mine(event, data):
+    stream.send(message)
 
+    event = q.expect('stream-iq', iq_type='set')
     message = event.stanza
 
     activities = xpath.queryForNodes('/iq/pubsub/publish/item/activities',
@@ -252,19 +213,15 @@ def expect_bob_activity_properties_copied_to_mine(event, data):
     event.stanza['type'] = 'result'
     event.stanza['to'] = 'test at localhost'
     event.stanza['from'] = 'test at localhost'
-    data['stream'].send(event.stanza)
+    stream.send(event.stanza)
 
-    data['act_prop_iface'] = dbus.Interface(data['conn'],
-            'org.laptop.Telepathy.ActivityProperties')
+    act_prop_iface = dbus.Interface(conn, 'org.laptop.Telepathy.ActivityProperties')
 
     # test sets the title and sets private back to True
-    call_async(data['test'], data['act_prop_iface'], 'SetProperties',
-        data['room_handle'], {'title': 'I can set the properties too',
-                              'private': True})
-    return True
+    call_async(q, act_prop_iface, 'SetProperties',
+            room_handle, {'title': 'I can set the properties too', 'private': True})
 
- at match('stream-message')
-def expect_properties_changed_broadcast(event, data):
+    event = q.expect('stream-message')
     message = event.stanza
     if message['to'] != 'chat at conf.localhost':
         return False
@@ -291,14 +248,12 @@ def expect_properties_changed_broadcast(event, data):
     assert 'title' in seen, seen
     assert 'private' in seen, seen
 
-    return True
 
- at match('stream-iq', iq_type='set')
-def expect_activity_properties_unpublication(event, data):
+    event = q.expect('stream-iq', iq_type='set')
     event.stanza['type'] = 'result'
     event.stanza['to'] = 'test at localhost'
     event.stanza['from'] = 'test at localhost'
-    data['stream'].send(event.stanza)
+    stream.send(event.stanza)
 
     message = event.stanza
 
@@ -310,14 +265,11 @@ def expect_activity_properties_unpublication(event, data):
     properties = xpath.queryForNodes('/activities/properties', activities[0])
     assert properties is None, repr(properties)
 
-    return True
-
- at match('stream-iq', iq_type='set')
-def expect_activity_unpublication(event, data):
+    event = q.expect('stream-iq', iq_type='set')
     event.stanza['type'] = 'result'
     event.stanza['to'] = 'test at localhost'
     event.stanza['from'] = 'test at localhost'
-    data['stream'].send(event.stanza)
+    stream.send(event.stanza)
 
     message = event.stanza
 
@@ -329,19 +281,14 @@ def expect_activity_unpublication(event, data):
     activity = xpath.queryForNodes('/activities/activity', activities[0])
     assert activity is None, repr(activity)
 
-    return True
-
- at match('dbus-return', method='SetProperties')
-def expect_set_activity_props_success(event, data):
+    q.expect('dbus-return', method='SetProperties')
 
     # test sets the title and sets private back to True
-    call_async(data['test'], data['act_prop_iface'], 'SetProperties',
-        data['room_handle'], {'title': 'I can set the properties too',
+    call_async(q, act_prop_iface, 'SetProperties',
+        room_handle, {'title': 'I can set the properties too',
                               'private': False})
-    return True
 
- at match('stream-message')
-def expect_properties_changed_broadcast2(event, data):
+    event = q.expect('stream-message')
     message = event.stanza
     if message['to'] != 'chat at conf.localhost':
         return False
@@ -368,14 +315,11 @@ def expect_properties_changed_broadcast2(event, data):
     assert 'title' in seen, seen
     assert 'private' in seen, seen
 
-    return True
-
- at match('stream-iq', iq_type='set')
-def expect_activity_properties_republication(event, data):
+    event = q.expect('stream-iq', iq_type='set')
     event.stanza['type'] = 'result'
     event.stanza['to'] = 'test at localhost'
     event.stanza['from'] = 'test at localhost'
-    data['stream'].send(event.stanza)
+    stream.send(event.stanza)
 
     message = event.stanza
 
@@ -406,14 +350,11 @@ def expect_activity_properties_republication(event, data):
     assert 'title' in seen, seen
     assert 'private' in seen, seen
 
-    return True
-
- at match('stream-iq', iq_type='set')
-def expect_activity_republication(event, data):
+    event = q.expect('stream-iq', iq_type='set')
     event.stanza['type'] = 'result'
     event.stanza['to'] = 'test at localhost'
     event.stanza['from'] = 'test at localhost'
-    data['stream'].send(event.stanza)
+    stream.send(event.stanza)
 
     message = event.stanza
 
@@ -427,20 +368,15 @@ def expect_activity_republication(event, data):
     assert activity[0]['room'] == 'chat at conf.localhost'
     assert activity[0]['type'] == 'foo_id'                  # sic
 
-    return True
-
- at match('dbus-return', method='SetProperties')
-def expect_set_activity_props_success2(event, data):
+    q.expect('dbus-return', method='SetProperties')
 
-    data['chan_iface'].Close()
-    return True
+    chan_iface.Close()
 
- at match('stream-iq', iq_type='set')
-def expect_activity_unpublication2(event, data):
+    event = q.expect('stream-iq', iq_type='set')
     event.stanza['type'] = 'result'
     event.stanza['to'] = 'test at localhost'
     event.stanza['from'] = 'test at localhost'
-    data['stream'].send(event.stanza)
+    stream.send(event.stanza)
 
     message = event.stanza
 
@@ -452,14 +388,11 @@ def expect_activity_unpublication2(event, data):
     activity = xpath.queryForNodes('/activities/activity', activities[0])
     assert activity is None, repr(activity)
 
-    return True
-
- at match('stream-iq', iq_type='set')
-def expect_activity_properties_unpublication2(event, data):
+    event = q.expect('stream-iq', iq_type='set')
     event.stanza['type'] = 'result'
     event.stanza['to'] = 'test at localhost'
     event.stanza['from'] = 'test at localhost'
-    data['stream'].send(event.stanza)
+    stream.send(event.stanza)
 
     message = event.stanza
 
@@ -471,13 +404,9 @@ def expect_activity_properties_unpublication2(event, data):
     properties = xpath.queryForNodes('/activities/properties', activities[0])
     assert properties is None, repr(properties)
 
-    data['conn_iface'].Disconnect()
-    return True
+    conn.Disconnect()
 
- at match('dbus-signal', signal='StatusChanged', args=[2, 1])
-def expect_disconnected(event, data):
-    return True
+    q.expect('dbus-signal', signal='StatusChanged', args=[2, 1])
 
 if __name__ == '__main__':
-    go()
-
+    exec_test(test)
-- 
1.5.6.3




More information about the Telepathy-commits mailing list