[Telepathy-commits] [telepathy-gabble/master] re-order test-capabilities.py to test that we go from none -> video + audio -> audio -> none correctly

Robert McQueen robert.mcqueen at collabora.co.uk
Tue Aug 19 10:52:13 PDT 2008


20080508183956-418b8-a22cb658d43ce19cf0b0e3e96e5cc41c271e40f4.gz
---
 tests/twisted/test-capabilities.py |   54 +++++++++++++++++++++--------------
 1 files changed, 32 insertions(+), 22 deletions(-)

diff --git a/tests/twisted/test-capabilities.py b/tests/twisted/test-capabilities.py
index 98ad913..46d76d9 100644
--- a/tests/twisted/test-capabilities.py
+++ b/tests/twisted/test-capabilities.py
@@ -7,6 +7,7 @@ import dbus
 
 from twisted.words.xish import domish
 
+from servicetest import EventPattern
 from gabbletest import exec_test, make_result_iq
 
 text = 'org.freedesktop.Telepathy.Channel.Type.Text'
@@ -40,17 +41,36 @@ def test(q, bus, conn, stream):
     # no special capabilities
     assert conn.Capabilities.GetCapabilities([2]) == basic_caps
 
-    # send updated presence with Jingle caps info
+    # send updated presence with Jingle audio/video caps info. we turn on both
+    # audio and video at the same time to test that all of the capabilities are
+    # discovered before any capabilities change signal is emitted
     presence = make_presence('bob at foo.com/Foo', None, 'hello')
     c = presence.addElement(('http://jabber.org/protocol/caps', 'c'))
     c['node'] = 'http://telepathy.freedesktop.org/fake-client'
     c['ver'] = '0.1'
+    c['ext'] = 'video'
     stream.send(presence)
 
-    # Gabble looks up our capabilities
-    event = q.expect('stream-iq', to='bob at foo.com/Foo',
-        query_ns='http://jabber.org/protocol/disco#info')
-    result = make_result_iq(stream, event.stanza)
+    # Gabble looks up both the version and the video bundles, in any order
+    (version_event, video_event) = q.expect_many(
+        EventPattern('stream-iq', to='bob at foo.com/Foo',
+            query_ns='http://jabber.org/protocol/disco#info',
+            query_node='http://telepathy.freedesktop.org/fake-client#0.1'),
+        EventPattern('stream-iq', to='bob at foo.com/Foo',
+            query_ns='http://jabber.org/protocol/disco#info',
+            query_node='http://telepathy.freedesktop.org/fake-client#video'))
+
+    # reply to the video bundle query first - this capability alone is not
+    # sufficient to make us callable
+    result = make_result_iq(stream, video_event.stanza)
+    query = result.firstChildElement()
+    feature = query.addElement('feature')
+    feature['var'] = 'http://jabber.org/protocol/jingle/description/video'
+    stream.send(result)
+
+    # reply to the version bundle query, which should make us audio and
+    # video callable
+    result = make_result_iq(stream, version_event.stanza)
     query = result.firstChildElement()
     feature = query.addElement('feature')
     feature['var'] = 'http://jabber.org/protocol/jingle'
@@ -60,38 +80,28 @@ def test(q, bus, conn, stream):
     feature['var'] = 'http://www.google.com/transport/p2p'
     stream.send(result)
 
-    # we can now do audio calls
+    # we can now do audio and video calls
     event = q.expect('dbus-signal', signal='CapabilitiesChanged',
-        args=[[(2, sm, 0, 3, 0, 1)]])
+        args=[[(2, sm, 0, 3, 0, 3)]])
 
-    # send updated presence with video support
+    # send updated presence without video support
     presence = make_presence('bob at foo.com/Foo', None, 'hello')
     c = presence.addElement(('http://jabber.org/protocol/caps', 'c'))
     c['node'] = 'http://telepathy.freedesktop.org/fake-client'
     c['ver'] = '0.1'
-    c['ext'] = 'video'
     stream.send(presence)
 
-    # Gabble looks up our new capabilities
-    event = q.expect('stream-iq', to='bob at foo.com/Foo',
-        query_ns='http://jabber.org/protocol/disco#info')
-    result = make_result_iq(stream, event.stanza)
-    query = result.firstChildElement()
-    feature = query.addElement('feature')
-    feature['var'] = 'http://jabber.org/protocol/jingle/description/video'
-    stream.send(result)
-
-    # we can now do video calls too
+    # we can now do only audio calls
     event = q.expect('dbus-signal', signal='CapabilitiesChanged',
-        args=[[(2, sm, 3, 3, 1, 3)]])
+        args=[[(2, sm, 3, 3, 3, 1)]])
 
     # go offline
     presence = make_presence('bob at foo.com/Foo', 'unavailable', None)
     stream.send(presence)
 
-    # can't do calls any more
+    # can't do audio calls any more
     event = q.expect('dbus-signal', signal='CapabilitiesChanged',
-        args=[[(2, sm, 3, 0, 3, 0)]])
+        args=[[(2, sm, 3, 0, 1, 0)]])
 
     # regression test for fd.o #15198: getting caps of invalid handle crashed
     try:
-- 
1.5.6.3




More information about the Telepathy-commits mailing list