[telepathy-gabble/master] Test poking various non-functional search services

Will Thompson will.thompson at collabora.co.uk
Wed Aug 26 09:21:48 PDT 2009


---
 tests/twisted/Makefile.am                        |    1 +
 tests/twisted/search/ceci-nest-pas-un-serveur.py |   81 ++++++++++++++++++++++
 2 files changed, 82 insertions(+), 0 deletions(-)
 create mode 100644 tests/twisted/search/ceci-nest-pas-un-serveur.py

diff --git a/tests/twisted/Makefile.am b/tests/twisted/Makefile.am
index 1e49d6a..fb06244 100644
--- a/tests/twisted/Makefile.am
+++ b/tests/twisted/Makefile.am
@@ -43,6 +43,7 @@ TWISTED_TESTS = \
 	roster/test-roster-item-deletion.py \
 	roster/test-roster-subscribe.py \
 	roster/test-save-alias-to-roster.py \
+	search/ceci-nest-pas-un-serveur.py \
 	search/unextended.py \
 	text/initiate.py \
 	text/initiate-requestotron.py \
diff --git a/tests/twisted/search/ceci-nest-pas-un-serveur.py b/tests/twisted/search/ceci-nest-pas-un-serveur.py
new file mode 100644
index 0000000..6e1ede9
--- /dev/null
+++ b/tests/twisted/search/ceci-nest-pas-un-serveur.py
@@ -0,0 +1,81 @@
+"""
+Tests requesting search channels to, and performing contact searches against,
+fake servers which are broken in various ways.
+"""
+
+import dbus
+
+from twisted.words.protocols.jabber.client import IQ
+
+from gabbletest import exec_test
+from servicetest import call_async, unwrap
+
+from pprint import pformat
+
+import constants as cs
+import ns
+
+def call_create(q, requests, server):
+    """
+    Calls CreateChannel for the given contact search server, and returns the IQ
+    stanza received by the server.
+    """
+
+    request = dbus.Dictionary(
+        {
+            cs.CHANNEL_TYPE: cs.CHANNEL_TYPE_CONTACT_SEARCH,
+            cs.CONTACT_SEARCH_SERVER: server,
+        }, signature='sv')
+    call_async(q, requests, 'CreateChannel', request)
+
+    iq_event = q.expect('stream-iq', to=server, query_ns=ns.SEARCH)
+    return iq_event.stanza
+
+def not_a_search_server(q, stream, requests):
+    iq = call_create(q, requests, 'notajud.localhost')
+
+    result = iq
+    result['type'] = 'error'
+    e = result.addElement('error')
+    e['type'] = 'cancel'
+    e.addElement((ns.STANZA, 'service-unavailable'))
+    stream.send(result)
+
+    event = q.expect('dbus-error', method='CreateChannel')
+    assert event.error.get_dbus_name() == cs.NOT_AVAILABLE, event.error
+
+def returns_invalid_fields(q, stream, requests):
+    iq = call_create(q, requests, 'broken.localhost')
+
+    result = IQ(stream, "result")
+    result["id"] = iq["id"]
+    query = result.addElement((ns.SEARCH, 'query'))
+    for f in ["first", "shoe-size", "nick", "star-sign"]:
+        query.addElement(f)
+    stream.send(result)
+
+    event = q.expect('dbus-error', method='CreateChannel')
+    assert event.error.get_dbus_name() == cs.NOT_AVAILABLE, event.error
+
+def disconnected_before_reply(q, stream, conn, requests):
+    iq = call_create(q, requests, 'slow.localhost')
+
+    call_async(q, conn, 'Disconnect')
+
+    event = q.expect('dbus-error', method='CreateChannel')
+    assert event.error.get_dbus_name() == cs.DISCONNECTED, event.error
+
+def test(q, bus, conn, stream):
+    conn.Connect()
+    q.expect('dbus-signal', signal='StatusChanged', args=[0, 1])
+
+    requests = dbus.Interface(conn, cs.CONN_IFACE_REQUESTS)
+
+    not_a_search_server(q, stream, requests)
+    returns_invalid_fields(q, stream, requests)
+    disconnected_before_reply(q, stream, conn, requests)
+
+    q.expect('dbus-return', method='Disconnect')
+
+if __name__ == '__main__':
+    exec_test(test)
-- 
1.5.6.5




More information about the telepathy-commits mailing list