[telepathy-gabble/master] Refactor testing outgoing tubes caps

Will Thompson will.thompson at collabora.co.uk
Wed Jun 3 09:58:24 PDT 2009


---
 tests/twisted/test-caps-tubes.py |  227 ++++++++++++++++----------------------
 1 files changed, 94 insertions(+), 133 deletions(-)

diff --git a/tests/twisted/test-caps-tubes.py b/tests/twisted/test-caps-tubes.py
index 63becd0..27ecedb 100644
--- a/tests/twisted/test-caps-tubes.py
+++ b/tests/twisted/test-caps-tubes.py
@@ -188,32 +188,63 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact):
          ns.TUBES + '/stream#daap',
         ], daap_xiangqi_caps, expect_disco=False)
 
+
+def advertise_caps(q, conn, stream, filters, expected_features, unexpected_features,
+                   expected_caps):
+    self_handle = conn.GetSelfHandle()
+    ret_caps = conn.ContactCapabilities.SetSelfCapabilities(filters)
+
+    # Expect Gabble to reply with the correct caps
+    event, caps_str, signaled_caps = receive_presence_and_ask_caps(q, stream)
+
+    assertEquals(expected_caps, signaled_caps)
+
+    assert caps_contain(event, ns.TUBES) == True, caps_str
+
+    for var in expected_features:
+        assert caps_contain(event, var), caps_str
+
+    for var in unexpected_features:
+        assert not caps_contain(event, var), caps_str
+
+    # Check our own caps
+    caps = conn.ContactCapabilities.GetContactCapabilities([self_handle])
+    assertEquals(expected_caps, caps)
+
+    # check the Contacts interface give the same caps
+    caps_via_contacts_iface = conn.Contacts.GetContactAttributes(
+            [self_handle], [cs.CONN_IFACE_CONTACT_CAPS], False) \
+            [self_handle][cs.CONN_IFACE_CONTACT_CAPS + '/caps']
+    assertEquals(caps[self_handle], caps_via_contacts_iface)
+
 def test_tube_caps_to_contact(q, bus, conn, stream):
-    basic_caps = dbus.Dictionary({1:
+    self_handle = conn.GetSelfHandle()
+
+    basic_caps = dbus.Dictionary({self_handle:
         [(text_fixed_properties, text_allowed_properties),
          (stream_tube_fixed_properties, stream_tube_allowed_properties),
          (dbus_tube_fixed_properties, dbus_tube_allowed_properties),
          (ft_fixed_properties, ft_allowed_properties)]})
-    daap_caps = dbus.Dictionary({1:
+    daap_caps = dbus.Dictionary({self_handle:
         [(text_fixed_properties, text_allowed_properties),
         (stream_tube_fixed_properties, stream_tube_allowed_properties),
         (dbus_tube_fixed_properties, dbus_tube_allowed_properties),
         (daap_fixed_properties, specialized_tube_allowed_properties),
         (ft_fixed_properties, ft_allowed_properties)]})
-    xiangqi_caps = dbus.Dictionary({1:
+    xiangqi_caps = dbus.Dictionary({self_handle:
         [(text_fixed_properties, text_allowed_properties),
         (stream_tube_fixed_properties, stream_tube_allowed_properties),
         (dbus_tube_fixed_properties, dbus_tube_allowed_properties),
         (xiangqi_fixed_properties, specialized_tube_allowed_properties),
         (ft_fixed_properties, ft_allowed_properties)]})
-    daap_xiangqi_caps = dbus.Dictionary({1:
+    daap_xiangqi_caps = dbus.Dictionary({self_handle:
         [(text_fixed_properties, text_allowed_properties),
         (stream_tube_fixed_properties, stream_tube_allowed_properties),
         (dbus_tube_fixed_properties, dbus_tube_allowed_properties),
         (daap_fixed_properties, specialized_tube_allowed_properties),
         (xiangqi_fixed_properties, specialized_tube_allowed_properties),
         (ft_fixed_properties, ft_allowed_properties)]})
-    all_tubes_caps = dbus.Dictionary({1:
+    all_tubes_caps = dbus.Dictionary({self_handle:
         [(text_fixed_properties, text_allowed_properties),
         (stream_tube_fixed_properties, stream_tube_allowed_properties),
         (dbus_tube_fixed_properties, dbus_tube_allowed_properties),
@@ -224,150 +255,80 @@ def test_tube_caps_to_contact(q, bus, conn, stream):
         (ft_fixed_properties, ft_allowed_properties)]})
 
     # Check our own caps
-    caps = conn.ContactCapabilities.GetContactCapabilities([1])
-    assert caps == basic_caps, caps
+    caps = conn.ContactCapabilities.GetContactCapabilities([self_handle])
+    assertEquals(basic_caps, caps)
+
     # check the Contacts interface give the same caps
     caps_via_contacts_iface = conn.Contacts.GetContactAttributes(
-            [1], [cs.CONN_IFACE_CONTACT_CAPS], False) \
-            [1][cs.CONN_IFACE_CONTACT_CAPS + '/caps']
-    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
+            [self_handle], [cs.CONN_IFACE_CONTACT_CAPS], False) \
+            [self_handle][cs.CONN_IFACE_CONTACT_CAPS + '/caps']
+    assertEquals(caps[self_handle], caps_via_contacts_iface)
 
     # Advertise nothing
     conn.ContactCapabilities.SetSelfCapabilities([])
 
     # Check our own caps
-    caps = conn.ContactCapabilities.GetContactCapabilities([1])
-    assert len(caps) == 1
-    assert caps == basic_caps, caps
-    # check the Contacts interface give the same caps
-    caps_via_contacts_iface = conn.Contacts.GetContactAttributes(
-            [1], [cs.CONN_IFACE_CONTACT_CAPS], False) \
-            [1][cs.CONN_IFACE_CONTACT_CAPS + '/caps']
-    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
-
-    sync_stream(q, stream)
-
-    # Advertise daap
-    ret_caps = conn.ContactCapabilities.SetSelfCapabilities(
-        [daap_fixed_properties])
-
-    # Expect Gabble to reply with the correct caps
-    event, caps_str, signaled_caps = receive_presence_and_ask_caps(q, stream)
-    assert caps_contain(event, ns.TUBES) == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/stream#daap') == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/stream#http') == False, caps_str
-    assert caps_contain(event, ns.TUBES + '/dbus#com.example.Go') \
-            == False, caps_str
-    assert caps_contain(event, ns.TUBES + '/dbus#com.example.Xiangqi') \
-            == False, caps_str
-    assert signaled_caps == daap_caps
-
-    # Check our own caps
-    caps = conn.ContactCapabilities.GetContactCapabilities([1])
-    assert caps == daap_caps, caps
-    # check the Contacts interface give the same caps
-    caps_via_contacts_iface = conn.Contacts.GetContactAttributes(
-            [1], [cs.CONN_IFACE_CONTACT_CAPS], False) \
-            [1][cs.CONN_IFACE_CONTACT_CAPS + '/caps']
-    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
+    caps = conn.ContactCapabilities.GetContactCapabilities([self_handle])
+    assertLength(1, caps)
+    assertEquals(basic_caps, caps)
 
-    # Advertise xiangqi
-    ret_caps = conn.ContactCapabilities.SetSelfCapabilities(
-        [xiangqi_fixed_properties])
-
-    # Expect Gabble to reply with the correct caps
-    event, caps_str, signaled_caps = receive_presence_and_ask_caps(q, stream)
-    assert caps_contain(event, ns.TUBES) == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/stream#daap') == False, caps_str
-    assert caps_contain(event, ns.TUBES + '/stream#http') == False, caps_str
-    assert caps_contain(event, ns.TUBES + '/dbus#com.example.Go') \
-            == False, caps_str
-    assert caps_contain(event, ns.TUBES + '/dbus#com.example.Xiangqi') \
-            == True, caps_str
-    assert signaled_caps == xiangqi_caps
-
-    # Check our own caps
-    caps = conn.ContactCapabilities.GetContactCapabilities([1])
-    assert caps == xiangqi_caps, caps
     # check the Contacts interface give the same caps
     caps_via_contacts_iface = conn.Contacts.GetContactAttributes(
-            [1], [cs.CONN_IFACE_CONTACT_CAPS], False) \
-            [1][cs.CONN_IFACE_CONTACT_CAPS + '/caps']
-    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
+            [self_handle], [cs.CONN_IFACE_CONTACT_CAPS], False) \
+            [self_handle][cs.CONN_IFACE_CONTACT_CAPS + '/caps']
+    assertEquals(caps[self_handle], caps_via_contacts_iface)
 
-    # Advertise daap + xiangqi
-    ret_caps = conn.ContactCapabilities.SetSelfCapabilities(
-        [daap_fixed_properties, xiangqi_fixed_properties])
+    sync_stream(q, stream)
 
-    # Expect Gabble to reply with the correct caps
-    event, caps_str, signaled_caps = receive_presence_and_ask_caps(q, stream)
-    assert caps_contain(event, ns.TUBES) == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/stream#daap') == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/stream#http') == False, caps_str
-    assert caps_contain(event, ns.TUBES + '/dbus#com.example.Go') \
-            == False, caps_str
-    assert caps_contain(event, ns.TUBES + '/dbus#com.example.Xiangqi') \
-            == True, caps_str
-    assert signaled_caps == daap_xiangqi_caps
+    advertise_caps(q, conn, stream,
+        [daap_fixed_properties],
+        [ns.TUBES + '/stream#daap'],
+        [ns.TUBES + '/stream#http',
+         ns.TUBES + '/dbus#com.example.Go',
+         ns.TUBES + '/dbus#com.example.Xiangqi',
+        ],
+        daap_caps)
+
+    advertise_caps(q, conn, stream,
+        [xiangqi_fixed_properties],
+        [ns.TUBES + '/dbus#com.example.Xiangqi'],
+        [ns.TUBES + '/stream#daap',
+         ns.TUBES + '/stream#http',
+         ns.TUBES + '/dbus#com.example.Go',
+        ],
+        xiangqi_caps)
 
-    # Check our own caps
-    caps = conn.ContactCapabilities.GetContactCapabilities([1])
-    assert caps == daap_xiangqi_caps, caps
-    # check the Contacts interface give the same caps
-    caps_via_contacts_iface = conn.Contacts.GetContactAttributes(
-            [1], [cs.CONN_IFACE_CONTACT_CAPS], False) \
-            [1][cs.CONN_IFACE_CONTACT_CAPS + '/caps']
-    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
+    advertise_caps(q, conn, stream,
+        [daap_fixed_properties, xiangqi_fixed_properties],
+        [ns.TUBES + '/dbus#com.example.Xiangqi',
+         ns.TUBES + '/stream#daap',
+        ],
+        [ns.TUBES + '/stream#http',
+         ns.TUBES + '/dbus#com.example.Go',
+        ],
+        daap_xiangqi_caps)
 
-    # Advertise 4 tubes
-    ret_caps = conn.ContactCapabilities.SetSelfCapabilities(
+    advertise_caps(q, conn, stream,
         [daap_fixed_properties, http_fixed_properties,
-         go_fixed_properties, xiangqi_fixed_properties])
-
-    # Expect Gabble to reply with the correct caps
-    event, caps_str, signaled_caps = receive_presence_and_ask_caps(q, stream)
-    assert caps_contain(event, ns.TUBES) == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/stream#daap') == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/stream#http') == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/dbus#com.example.Go') \
-            == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/dbus#com.example.Xiangqi') \
-            == True, caps_str
-    assert signaled_caps == all_tubes_caps
-
-    # Check our own caps
-    caps = conn.ContactCapabilities.GetContactCapabilities([1])
-    assert caps == all_tubes_caps, caps
-    # check the Contacts interface give the same caps
-    caps_via_contacts_iface = conn.Contacts.GetContactAttributes(
-            [1], [cs.CONN_IFACE_CONTACT_CAPS], False) \
-            [1][cs.CONN_IFACE_CONTACT_CAPS + '/caps']
-    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
-
-    # Advertise daap + xiangqi
-    ret_caps = conn.ContactCapabilities.SetSelfCapabilities(
-        [daap_fixed_properties, xiangqi_fixed_properties])
-
-    # Expect Gabble to reply with the correct caps
-    event, caps_str, signaled_caps = receive_presence_and_ask_caps(q, stream)
-    assert caps_contain(event, ns.TUBES) == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/stream#daap') == True, caps_str
-    assert caps_contain(event, ns.TUBES + '/stream#http') == False, caps_str
-    assert caps_contain(event, ns.TUBES + '/dbus#com.example.Go') \
-            == False, caps_str
-    assert caps_contain(event, ns.TUBES + '/dbus#com.example.Xiangqi') \
-            == True, caps_str
-    assert signaled_caps == daap_xiangqi_caps
-
-    # Check our own caps
-    caps = conn.ContactCapabilities.GetContactCapabilities([1])
-    assert caps == daap_xiangqi_caps, caps
-    # check the Contacts interface give the same caps
-    caps_via_contacts_iface = conn.Contacts.GetContactAttributes(
-            [1], [cs.CONN_IFACE_CONTACT_CAPS], False) \
-            [1][cs.CONN_IFACE_CONTACT_CAPS + '/caps']
-    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
+         go_fixed_properties, xiangqi_fixed_properties],
+        [ns.TUBES + '/dbus#com.example.Xiangqi',
+         ns.TUBES + '/stream#daap',
+         ns.TUBES + '/stream#http',
+         ns.TUBES + '/dbus#com.example.Go',
+        ],
+        [],
+        all_tubes_caps)
 
+    # test daap + xiangqi again for some reason
+    advertise_caps(q, conn, stream,
+        [daap_fixed_properties, xiangqi_fixed_properties],
+        [ns.TUBES + '/dbus#com.example.Xiangqi',
+         ns.TUBES + '/stream#daap',
+        ],
+        [ns.TUBES + '/stream#http',
+         ns.TUBES + '/dbus#com.example.Go',
+        ],
+        daap_xiangqi_caps)
 
 def test(q, bus, conn, stream):
     conn.Connect()
-- 
1.5.6.5



More information about the telepathy-commits mailing list