[Telepathy-commits] [telepathy-gabble/master] Add a simple smoke-test for SimplePresence

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


20080804113318-53eee-c470ebdcf276c8d1860f7399e3c9539296c35053.gz
---
 tests/twisted/Makefile.am             |    1 +
 tests/twisted/presence/presence.py    |  110 +++++++++++++++++++++++++++++++++
 2 files changed, 111 insertions(+), 0 deletions(-)
 create mode 100644 tests/twisted/presence/.git-darcs-dir
 create mode 100644 tests/twisted/presence/presence.py

diff --git a/tests/twisted/Makefile.am b/tests/twisted/Makefile.am
index 5940fb1..ada6aa8 100644
--- a/tests/twisted/Makefile.am
+++ b/tests/twisted/Makefile.am
@@ -9,6 +9,7 @@ TWISTED_TESTS = \
 	olpc/olpc-muc-prop-change.py \
 	olpc/test-olpc-bundle.py \
 	olpc/test-olpc-set-props-preload.py \
+	presence/presence.py \
 	roster/groups.py \
 	roster/groups-12791.py \
 	roster/test-google-roster.py \
diff --git a/tests/twisted/presence/.git-darcs-dir b/tests/twisted/presence/.git-darcs-dir
new file mode 100644
index 0000000..e69de29
diff --git a/tests/twisted/presence/presence.py b/tests/twisted/presence/presence.py
new file mode 100644
index 0000000..3f8da22
--- /dev/null
+++ b/tests/twisted/presence/presence.py
@@ -0,0 +1,110 @@
+
+"""
+Test basic roster functionality.
+"""
+
+import dbus
+
+from twisted.words.xish import domish, xpath
+
+from gabbletest import exec_test
+
+def _expect_contact_list_channel(q, bus, conn, name, contacts):
+    event = q.expect('dbus-signal', signal='NewChannel')
+    path, type, handle_type, handle, suppress_handler = event.args
+
+    assert type == u'org.freedesktop.Telepathy.Channel.Type.ContactList'
+    assert conn.InspectHandles(handle_type, [handle])[0] == name
+    chan = bus.get_object(conn.bus_name, path)
+    group_iface = dbus.Interface(chan,
+        u'org.freedesktop.Telepathy.Channel.Interface.Group')
+    members = group_iface.GetMembers()
+    assert conn.InspectHandles(1, members) == contacts
+
+    # Exercise basic Channel Properties from spec 0.17.7
+    channel_props = chan.GetAll(
+            'org.freedesktop.Telepathy.Channel',
+            dbus_interface='org.freedesktop.DBus.Properties')
+    assert channel_props.get('TargetHandle') == handle,\
+            (channel_props.get('TargetHandle'), handle)
+    assert channel_props.get('TargetHandleType') == 3,\
+            channel_props.get('TargetHandleType')
+    assert channel_props.get('ChannelType') == \
+            'org.freedesktop.Telepathy.Channel.Type.ContactList',\
+            channel_props.get('ChannelType')
+    assert 'org.freedesktop.Telepathy.Channel.Interface.Group' in \
+            channel_props.get('Interfaces', ()), \
+            channel_props.get('Interfaces')
+
+    # Exercise FUTURE properties
+    future_props = chan.GetAll(
+            'org.freedesktop.Telepathy.Channel.FUTURE',
+            dbus_interface='org.freedesktop.DBus.Properties')
+    assert future_props['Requested'] == False
+    assert future_props['TargetID'] == name
+    assert future_props['InitiatorID'] == ''
+    assert future_props['InitiatorHandle'] == 0
+
+    # Exercise Group Properties from spec 0.17.6 (in a basic way)
+    group_props = chan.GetAll(
+            'org.freedesktop.Telepathy.Channel.Interface.Group',
+            dbus_interface='org.freedesktop.DBus.Properties')
+    assert 'HandleOwners' in group_props, group_props
+    assert 'Members' in group_props, group_props
+    assert group_props['Members'] == members, group_props['Members']
+    assert 'LocalPendingMembers' in group_props, group_props
+    assert group_props['LocalPendingMembers'] == []
+    assert 'RemotePendingMembers' in group_props, group_props
+    assert group_props['RemotePendingMembers'] == []
+    assert 'GroupFlags' in group_props, group_props
+
+def test(q, bus, conn, stream):
+    conn.Connect()
+    q.expect('dbus-signal', signal='StatusChanged', args=[0, 1])
+
+    amy_handle = conn.RequestHandles(1, ['amy at foo.com'])[0]
+
+    event = q.expect('stream-iq', query_ns='jabber:iq:roster')
+    event.stanza['type'] = 'result'
+
+    item = event.query.addElement('item')
+    item['jid'] = 'amy at foo.com'
+    item['subscription'] = 'both'
+
+    stream.send(event.stanza)
+
+    _expect_contact_list_channel(q, bus, conn, 'publish',
+        ['amy at foo.com'])
+    _expect_contact_list_channel(q, bus, conn, 'subscribe',
+        ['amy at foo.com'])
+    _expect_contact_list_channel(q, bus, conn, 'known',
+        ['amy at foo.com'])
+
+    presence = domish.Element((None, 'presence'))
+    presence['from'] = 'amy at foo.com'
+    show = presence.addElement((None, 'show'))
+    show.addContent('away')
+    status = presence.addElement((None, 'status'))
+    status.addContent('At the pub')
+    stream.send(presence)
+
+    event = q.expect('dbus-signal', signal='PresencesChanged')
+    assert event.args[0] == { amy_handle: (3, 'away', 'At the pub') }
+
+    presence = domish.Element((None, 'presence'))
+    presence['from'] = 'amy at foo.com'
+    show = presence.addElement((None, 'show'))
+    show.addContent('chat')
+    status = presence.addElement((None, 'status'))
+    status.addContent('I may have been drinking')
+    stream.send(presence)
+
+    event = q.expect('dbus-signal', signal='PresencesChanged')
+    assert event.args[0] == { amy_handle: (2, 'chat', 'I may have been drinking') }
+
+    conn.Disconnect()
+    q.expect('dbus-signal', signal='StatusChanged', args=[2, 1])
+
+if __name__ == '__main__':
+    exec_test(test)
+
-- 
1.5.6.3




More information about the Telepathy-commits mailing list