telepathy-gabble: Regression test for malformed privacy list replies

Will Thompson wjt at kemper.freedesktop.org
Thu Dec 6 08:39:38 PST 2012


Module: telepathy-gabble
Branch: master
Commit: 9687c65355f885bc17d7f5f6c849c5f333397021
URL:    http://cgit.freedesktop.org/telepathy/telepathy-gabble/commit/?id=9687c65355f885bc17d7f5f6c849c5f333397021

Author: Will Thompson <will.thompson at collabora.co.uk>
Date:   Tue Nov 27 18:40:29 2012 +0000

Regression test for malformed privacy list replies

---

 tests/twisted/presence/invisible_xep_0126.py |   20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/tests/twisted/presence/invisible_xep_0126.py b/tests/twisted/presence/invisible_xep_0126.py
index fd39ef8..7dbfb36 100644
--- a/tests/twisted/presence/invisible_xep_0126.py
+++ b/tests/twisted/presence/invisible_xep_0126.py
@@ -18,6 +18,7 @@ import ns
 import constants as cs
 from twisted.words.xish import xpath, domish
 from invisible_helper import ManualPrivacyListStream
+from functools import partial
 
 def test_create_invisible_list(q, bus, conn, stream):
     conn.SimplePresence.SetPresence("away", "")
@@ -111,7 +112,8 @@ def test_invisible_on_connect_fail_no_list(q, bus, conn, stream):
     assertDoesNotContain("hidden",
         conn.Properties.Get(cs.CONN_IFACE_SIMPLE_PRESENCE, "Statuses"))
 
-def test_invisible_on_connect_fail_invalid_list(q, bus, conn, stream):
+def test_invisible_on_connect_fail_invalid_list(q, bus, conn, stream,
+                                                really_invalid=False):
     props = conn.Properties.GetAll(cs.CONN_IFACE_SIMPLE_PRESENCE)
     assertNotEquals({}, props['Statuses'])
 
@@ -129,10 +131,15 @@ def test_invisible_on_connect_fail_invalid_list(q, bus, conn, stream):
     list_node = xpath.queryForNodes('//list', get_list.query)[0]
     assertEquals('invisible', list_node['name'])
 
-    stream.send_privacy_list(get_list.stanza,
-        [elem('item', type='jid', value='tybalt at example.com', action='allow',
-             order='1')(elem('presence-out')),
-        elem('item', action='deny', order='2')(elem('presence-out'))])
+    if really_invalid:
+        # At one point Gabble would crash if the reply was of type 'result' but
+        # wasn't well-formed.
+        acknowledge_iq(stream, get_list.stanza)
+    else:
+        stream.send_privacy_list(get_list.stanza,
+            [elem('item', type='jid', value='tybalt at example.com', action='allow',
+                 order='1')(elem('presence-out')),
+            elem('item', action='deny', order='2')(elem('presence-out'))])
 
     create_list = q.expect('stream-iq', query_ns=ns.PRIVACY, iq_type='set')
     created = xpath.queryForNodes('//list', create_list.stanza)[0]
@@ -348,6 +355,9 @@ if __name__ == '__main__':
               protocol=ManualPrivacyListStream, do_connect=False)
     exec_test(test_invisible_on_connect_fail_invalid_list,
               protocol=ManualPrivacyListStream, do_connect=False)
+    exec_test(partial(test_invisible_on_connect_fail_invalid_list,
+                      really_invalid=True),
+              protocol=ManualPrivacyListStream, do_connect=False)
     exec_test(test_privacy_list_push_valid, protocol=ManualPrivacyListStream,
               do_connect=False)
     exec_test(test_privacy_list_push_conflict, protocol=ManualPrivacyListStream,



More information about the telepathy-commits mailing list