[telepathy-gabble/master] add search/no-server-property.py

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Wed Aug 26 09:22:05 PDT 2009


---
 tests/twisted/Makefile.am                  |    1 +
 tests/twisted/search/no-server-property.py |   65 ++++++++++++++++++++++++++++
 2 files changed, 66 insertions(+), 0 deletions(-)
 create mode 100644 tests/twisted/search/no-server-property.py

diff --git a/tests/twisted/Makefile.am b/tests/twisted/Makefile.am
index 4d74963..07f6fd3 100644
--- a/tests/twisted/Makefile.am
+++ b/tests/twisted/Makefile.am
@@ -45,6 +45,7 @@ TWISTED_TESTS = \
 	roster/test-save-alias-to-roster.py \
 	search/ceci-nest-pas-un-serveur.py \
 	search/extended.py \
+	search/no-server-property.py \
 	search/unextended.py \
 	text/initiate.py \
 	text/initiate-requestotron.py \
diff --git a/tests/twisted/search/no-server-property.py b/tests/twisted/search/no-server-property.py
new file mode 100644
index 0000000..9a33225
--- /dev/null
+++ b/tests/twisted/search/no-server-property.py
@@ -0,0 +1,65 @@
+"""
+Tests Contact Search channels to a simulated XEP-0055 service, without
+passing the Server property
+"""
+
+import dbus
+
+from twisted.words.xish import xpath
+
+from gabbletest import exec_test, sync_stream, make_result_iq, acknowledge_iq, elem_iq, elem
+from servicetest import EventPattern
+from search_helper import call_create, answer_field_query
+
+import constants as cs
+import ns
+
+JUD_SERVER = 'jud.localhost'
+
+def test(q, bus, conn, stream):
+    conn.Connect()
+
+    _, iq_event, disco_event = q.expect_many(
+        EventPattern('dbus-signal', signal='StatusChanged',
+            args=[cs.CONN_STATUS_CONNECTED, cs.CSR_REQUESTED]),
+        EventPattern('stream-iq', to=None, query_ns='vcard-temp',
+            query_name='vCard'),
+        EventPattern('stream-iq', to='localhost', query_ns=ns.DISCO_ITEMS))
+
+    acknowledge_iq(stream, iq_event.stanza)
+
+    requests = dbus.Interface(conn, cs.CONN_IFACE_REQUESTS)
+
+    # no search server has been discovered yet. Requesting a search channel
+    # without specifying the Server will fail
+    call_create(q, requests, server=None)
+    e = q.expect('dbus-error', method='CreateChannel')
+    assert e.error.get_dbus_name() == cs.INVALID_ARGUMENT
+
+    # reply to IQ query
+    reply = make_result_iq(stream, disco_event.stanza)
+    query = xpath.queryForNodes('/iq/query', reply)[0]
+    item = query.addElement((None, 'item'))
+    item['jid'] = JUD_SERVER
+    stream.send(reply)
+
+    # wait for the disco#info query
+    event = q.expect('stream-iq', to=JUD_SERVER, query_ns=ns.DISCO_INFO)
+
+    reply = elem_iq(stream, 'result', id=event.stanza['id'], from_=JUD_SERVER)(
+        elem(ns.DISCO_INFO, 'query')(
+            elem('identity', category='directory', type='user', name='vCard User Search')(),
+            elem('feature', var=ns.SEARCH)()))
+
+    stream.send(reply)
+
+    # Make sure Gabble's received the reply
+    sync_stream(q, stream)
+
+    call_create(q, requests, server=None)
+
+    # JUD_SERVER is used as default
+    answer_field_query(q, stream, JUD_SERVER)
+
+if __name__ == '__main__':
+    exec_test(test)
-- 
1.5.6.5




More information about the telepathy-commits mailing list