[telepathy-gabble/master] search/search_helper.py: add answer_extended_field_query

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


---
 tests/twisted/search/search_helper.py |   46 ++++++++++++++++++++++++++++++---
 1 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/tests/twisted/search/search_helper.py b/tests/twisted/search/search_helper.py
index 7b6380d..f1b49c9 100644
--- a/tests/twisted/search/search_helper.py
+++ b/tests/twisted/search/search_helper.py
@@ -16,18 +16,19 @@ def call_create(q, requests, server):
 
     call_async(q, requests, 'CreateChannel', request)
 
-def answer_field_query(q, stream, server):
+def _wait_for_server_query(q, stream, server):
     # Gabble asks the server what search fields it supports
     iq_event = q.expect('stream-iq', to=server, query_ns=ns.SEARCH)
     iq = iq_event.stanza
 
-    # The server says it supports all the fields in unextended XEP 0055
     result = IQ(stream, "result")
     result["id"] = iq["id"]
     query = result.addElement((ns.SEARCH, 'query'))
     query.addElement("instructions", content="cybar?")
-    for f in ["first", "last", "nick", "email"]:
-        query.addElement(f)
+
+    return result, query
+
+def _send_server_reply(q, stream, result):
     stream.send(result)
 
     ret = q.expect('dbus-return', method='CreateChannel')
@@ -35,6 +36,43 @@ def answer_field_query(q, stream, server):
 
     return (ret, nc_sig)
 
+def answer_field_query(q, stream, server):
+    result, query = _wait_for_server_query(q, stream, server)
+
+    # The server says it supports all the fields in unextended XEP 0055
+    for f in ["first", "last", "nick", "email"]:
+        query.addElement(f)
+
+    return _send_server_reply(q, stream, result)
+
+def answer_extended_field_query(q, stream, server, fields):
+    result, query = _wait_for_server_query(q, stream, server)
+
+    x = query.addElement((ns.X_DATA, 'x'))
+    x['type'] = 'form'
+    x.addElement('title', content="User Directory Search")
+    x.addElement('instructions', content="mooh?")
+    # add FORM_TYPE
+    field = x.addElement('field')
+    field['type'] = 'hidden'
+    field['var'] = 'FORM_TYPE'
+    field.addElement('value', content=ns.SEARCH)
+
+    # add fields
+    for var, type, label, options in fields:
+        field = x.addElement('field')
+        field['var'] = var
+        field['type'] = type
+        field['label'] = label
+
+        # add options (if any)
+        for value, label in options:
+            option = field.addElement('option')
+            option['label'] = label
+            v = option.addElement('value', content=value)
+
+    return _send_server_reply(q, stream, result)
+
 def make_search(q, c_search, c_props, server):
     terms = { 'x-n-family': 'Threepwood' }
     call_async(q, c_search, 'Search', terms)
-- 
1.5.6.5




More information about the telepathy-commits mailing list