[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