[telepathy-gabble/master] add pubsub.py testing bugged pubsub notification messages

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Thu Sep 3 02:40:56 PDT 2009


The goal is to increase pubsub.c test coverage before refactoring it.
---
 tests/twisted/Makefile.am |    3 +-
 tests/twisted/pubsub.py   |   88 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 90 insertions(+), 1 deletions(-)
 create mode 100644 tests/twisted/pubsub.py

diff --git a/tests/twisted/Makefile.am b/tests/twisted/Makefile.am
index db0bf92..89755d6 100644
--- a/tests/twisted/Makefile.am
+++ b/tests/twisted/Makefile.am
@@ -138,7 +138,8 @@ TWISTED_TESTS = \
 	test-fallback-socks5-proxy.py \
 	test-register.py \
 	test-set-status-idempotence.py \
-        test-location.py
+        test-location.py \
+	pubsub.py
 
 TESTS =
 
diff --git a/tests/twisted/pubsub.py b/tests/twisted/pubsub.py
new file mode 100644
index 0000000..77a1788
--- /dev/null
+++ b/tests/twisted/pubsub.py
@@ -0,0 +1,88 @@
+"""Send malformed pubsub notifications to be sure that Gabble isn't confused about those"""
+from gabbletest import exec_test, elem, sync_stream
+
+import constants as cs
+import ns
+
+def test(q, bus, conn, stream):
+    conn.Connect()
+
+    q.expect('dbus-signal', signal='StatusChanged',
+      args=[cs.CONN_STATUS_CONNECTED, cs.CSR_REQUESTED])
+
+    # event node without NS
+    message = elem('message', from_='bob at foo.com')(
+        elem('event')(
+            elem('items', node=ns.GEOLOC)(
+                elem('item', id='12345')(
+                    elem(ns.GEOLOC, 'geoloc')(
+                        elem ('country') (u'France'))))))
+    stream.send(message)
+
+    # event node with a wrong NS
+    message = elem('message', from_='bob at foo.com')(
+        elem('badger', 'event')(
+            elem('items', node=ns.GEOLOC)(
+                elem('item', id='12345')(
+                    elem(ns.GEOLOC, 'geoloc')(
+                        elem ('country') (u'France'))))))
+    stream.send(message)
+
+    # event node without 'from'
+    message = elem('message')(
+        elem((ns.PUBSUB + "#event"), 'event')(
+            elem('items', node=ns.GEOLOC)(
+                elem('item', id='12345')(
+                    elem(ns.GEOLOC, 'geoloc')(
+                        elem ('country') (u'France'))))))
+    stream.send(message)
+
+    # event node with an invalid 'from'
+    message = elem('message', from_='aaaa')(
+        elem((ns.PUBSUB + "#event"), 'event')(
+            elem('items', node=ns.GEOLOC)(
+                elem('item', id='12345')(
+                    elem(ns.GEOLOC, 'geoloc')(
+                        elem ('country') (u'France'))))))
+    stream.send(message)
+
+    # no items node
+    message = elem('message', from_='bob at foo.com')(
+        elem((ns.PUBSUB + "#event"), 'event')())
+    stream.send(message)
+
+    # no item node
+    message = elem('message', from_='bob at foo.com')(
+        elem((ns.PUBSUB + "#event"), 'event')(
+            elem('items', node=ns.GEOLOC)()))
+    stream.send(message)
+
+    # item node doesn't have any child
+    message = elem('message', from_='bob at foo.com')(
+        elem((ns.PUBSUB + "#event"), 'event')(
+            elem('items', node=ns.GEOLOC)(
+                elem('item', id='12345')())))
+    stream.send(message)
+
+    # the child of the item node doesn't have a NS
+    message = elem('message', from_='bob at foo.com')(
+        elem((ns.PUBSUB + "#event"), 'event')(
+            elem('items', node=ns.GEOLOC)(
+                elem('item', id='12345')(
+                    elem('geoloc')(
+                        elem ('country') (u'France'))))))
+    stream.send(message)
+
+    # valid but unknown pubsub notification
+    message = elem('message', from_='bob at foo.com')(
+        elem((ns.PUBSUB + "#event"), 'event')(
+            elem('items', node='http://www.badger.com')(
+                elem('item', id='12345')(
+                    elem('http://www.badger.com', 'badger')(
+                        elem ('mushroom') (u'snake'))))))
+    stream.send(message)
+
+    sync_stream(q, stream)
+
+if __name__ == '__main__':
+    exec_test(test)
-- 
1.5.6.5




More information about the telepathy-commits mailing list