[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