[telepathy-gabble/telepathy-gabble-0.8] Factor a lot of useful code out of the caps-cache into the caps_helper

Sjoerd Simons sjoerd.simons at collabora.co.uk
Mon Sep 28 13:17:46 PDT 2009


---
 tests/twisted/caps/caps-cache.py |   84 +++++++++++--------------------------
 tests/twisted/caps_helper.py     |   47 +++++++++++++++++++++-
 2 files changed, 71 insertions(+), 60 deletions(-)

diff --git a/tests/twisted/caps/caps-cache.py b/tests/twisted/caps/caps-cache.py
index bb379d5..a654d74 100644
--- a/tests/twisted/caps/caps-cache.py
+++ b/tests/twisted/caps/caps-cache.py
@@ -12,6 +12,7 @@ import constants as cs
 import ns
 from caps_helper import (
     compute_caps_hash, make_caps_disco_reply, fake_client_dataforms,
+    presence_and_disco, send_presence, expect_disco, send_disco_reply
     )
 
 client = 'http://telepathy.freedesktop.org/fake-client'
@@ -21,50 +22,6 @@ features = [
     'http://www.google.com/transport/p2p',
     ]
 
-def presence_and_disco(q, conn, stream, contact, disco,
-                       caps, dataforms={}, initial=True):
-    h = send_presence(q, conn, stream, contact, caps, initial=initial)
-
-    if disco:
-        stanza = expect_disco(q, contact, caps)
-        send_disco_reply(stream, stanza, dataforms)
-
-    expect_caps(q, conn, h)
-
-def send_presence(q, conn, stream, contact, caps, initial=True):
-    h = conn.RequestHandles(cs.HT_CONTACT, [contact])[0]
-
-    if initial:
-        stream.send(make_presence(contact, status='hello'))
-
-        q.expect_many(
-            EventPattern('dbus-signal', signal='PresenceUpdate',
-                args=[{h:
-                   (0L, {u'available': {'message': 'hello'}})}]),
-            EventPattern('dbus-signal', signal='PresencesChanged',
-                args=[{h:
-                   (2, u'available', 'hello')}]))
-
-        # no special capabilities
-        assertEquals([(h, cs.CHANNEL_TYPE_TEXT, 3, 0)],
-            conn.Capabilities.GetCapabilities([h]))
-
-    # send updated presence with Jingle caps info
-    stream.send(make_presence(contact, status='hello', caps=caps))
-
-    return h
-
-def expect_disco(q, contact, caps):
-    # Gabble looks up our capabilities
-    event = q.expect('stream-iq', to=contact, query_ns=ns.DISCO_INFO)
-    assertEquals(client + '#' + caps['ver'], event.query['node'])
-
-    return event.stanza
-
-def send_disco_reply(stream, stanza, dataforms={}):
-    # send good reply
-    result = make_caps_disco_reply(stream, stanza, features, dataforms)
-    stream.send(result)
 
 def expect_caps(q, conn, h):
     # we can now do audio calls
@@ -75,6 +32,12 @@ def check_caps(conn, h):
     assertContains((h, cs.CHANNEL_TYPE_STREAMED_MEDIA, 3, cs.MEDIA_CAP_AUDIO),
         conn.Capabilities.GetCapabilities([h]))
 
+def update_contact_caps(q, conn, stream, contact, caps, disco = True,
+    dataforms = {}, initial = True):
+    h = presence_and_disco (q, conn, stream, contact,
+        disco, client, caps, features, dataforms=dataforms, initial = initial)
+    expect_caps (q, conn, h)
+
 def test(q, bus, conn, stream):
     conn.Connect()
     q.expect('dbus-signal', signal='StatusChanged',
@@ -85,11 +48,11 @@ def test(q, bus, conn, stream):
         'ver':  '0.1',
         }
 
-    presence_and_disco(q, conn, stream, 'bob1 at foo.com/Foo', True, caps)
-    presence_and_disco(q, conn, stream, 'bob2 at foo.com/Foo', True, caps)
+    update_contact_caps(q, conn, stream, 'bob1 at foo.com/Foo', caps)
+    update_contact_caps(q, conn, stream, 'bob2 at foo.com/Foo', caps)
 
     # Meredith signs in from one resource.
-    presence_and_disco(q, conn, stream, 'meredith at foo.com/One', True, caps)
+    update_contact_caps(q, conn, stream, 'meredith at foo.com/One', caps)
     # Meredith signs in from another resource with the same client. We don't
     # need to disco her, even though we don't trust this caps node in general
     # yet, because she's already told us what it means.
@@ -103,25 +66,28 @@ def test(q, bus, conn, stream):
     # Jens signs in from one resource, which is slow to answer the disco query.
     jens_one = 'jens at foo.com/One'
     j = send_presence(q, conn, stream, jens_one, caps)
-    j_stanza = expect_disco(q, jens_one, caps)
+    j_stanza = expect_disco(q, jens_one, client, caps)
 
     # Jens now signs in elsewhere with the same client; we disco it (maybe
     # it'll reply sooner? Maybe his first client's network connection went away
     # and the server hasn't noticed yet?) and it replies immediately.
-    presence_and_disco(q, conn, stream, 'jens at foo.com/Two', True, caps,
+    update_contact_caps (q, conn, stream, 'jens at foo.com/Two', caps,
         initial=False)
 
     # Jens' first client replies. We don't expect any caps changes here, and
     # this shouldn't count as a second point towards the five we need to trust
     # this caps node.
-    send_disco_reply(stream, j_stanza)
+    send_disco_reply(stream, j_stanza, features)
+    check_caps (conn, j)
 
-    presence_and_disco(q, conn, stream, 'bob5 at foo.com/Foo', True, caps)
+    update_contact_caps (q, conn, stream, 'bob5 at foo.com/Foo', caps)
 
     # Now five distinct contacts have told us what this caps node means, we
     # trust it.
-    presence_and_disco(q, conn, stream, 'bob6 at foo.com/Foo', False, caps)
-    presence_and_disco(q, conn, stream, 'bob7 at foo.com/Foo', False, caps)
+    update_contact_caps (q, conn, stream, 'bob6 at foo.com/Foo', caps,
+        disco = False)
+    update_contact_caps (q, conn, stream, 'bob7 at foo.com/Foo', caps,
+        disco = False)
 
     caps = {
         'node': client,
@@ -129,14 +95,14 @@ def test(q, bus, conn, stream):
         'hash': 'sha-1',
         }
 
-    presence_and_disco(q, conn, stream, 'bilbo1 at foo.com/Foo', True, caps,
-        fake_client_dataforms)
+    update_contact_caps(q, conn, stream, 'bilbo1 at foo.com/Foo',
+       caps,  dataforms = fake_client_dataforms)
     # We can verify the reply for these caps against the hash, and thus never
     # need to disco it again.
-    presence_and_disco(q, conn, stream, 'bilbo2 at foo.com/Foo', False, caps,
-        fake_client_dataforms)
-    presence_and_disco(q, conn, stream, 'bilbo3 at foo.com/Foo', False, caps,
-        fake_client_dataforms)
+    update_contact_caps(q, conn, stream, 'bilbo2 at foo.com/Foo', caps,
+        disco = False, dataforms = fake_client_dataforms)
+    update_contact_caps(q, conn, stream, 'bilbo3 at foo.com/Foo', caps,
+        disco = False, dataforms = fake_client_dataforms)
 
 if __name__ == '__main__':
     exec_test(test)
diff --git a/tests/twisted/caps_helper.py b/tests/twisted/caps_helper.py
index 1a2c83b..c7a3ed8 100644
--- a/tests/twisted/caps_helper.py
+++ b/tests/twisted/caps_helper.py
@@ -4,7 +4,7 @@ import base64
 import dbus
 
 from twisted.words.xish import domish, xpath
-from gabbletest import make_result_iq
+from gabbletest import make_result_iq, make_presence
 from servicetest import EventPattern, assertEquals, assertContains, \
         assertDoesNotContain
 
@@ -235,6 +235,51 @@ def caps_contain(event, cap):
         return False
     return var == cap
 
+def presence_and_disco(q, conn, stream, contact, disco,
+                       client, caps, features, dataforms={}, initial=True):
+    h = send_presence(q, conn, stream, contact, caps, initial=initial)
+
+    if disco:
+        stanza = expect_disco(q, contact, client, caps)
+        send_disco_reply(stream, stanza, features, dataforms)
+
+    return h
+
+def send_presence(q, conn, stream, contact, caps, initial=True):
+    h = conn.RequestHandles(cs.HT_CONTACT, [contact])[0]
+
+    if initial:
+        stream.send(make_presence(contact, status='hello'))
+
+        q.expect_many(
+            EventPattern('dbus-signal', signal='PresenceUpdate',
+                args=[{h:
+                   (0L, {u'available': {'message': 'hello'}})}]),
+            EventPattern('dbus-signal', signal='PresencesChanged',
+                args=[{h:
+                   (2, u'available', 'hello')}]))
+
+        # no special capabilities
+        assertEquals([(h, cs.CHANNEL_TYPE_TEXT, 3, 0)],
+            conn.Capabilities.GetCapabilities([h]))
+
+    # send updated presence with caps info
+    stream.send(make_presence(contact, status='hello', caps=caps))
+
+    return h
+
+def expect_disco(q, contact, client, caps):
+    # Gabble looks up our capabilities
+    event = q.expect('stream-iq', to=contact, query_ns=ns.DISCO_INFO)
+    assertEquals(client + '#' + caps['ver'], event.query['node'])
+
+    return event.stanza
+
+def send_disco_reply(stream, stanza, features, dataforms={}):
+    # send good reply
+    result = make_caps_disco_reply(stream, stanza, features, dataforms)
+    stream.send(result)
+
 if __name__ == '__main__':
     # example from XEP-0115
     assert compute_caps_hash(['client/pc//Exodus 0.9.1'],
-- 
1.5.6.5




More information about the telepathy-commits mailing list