diff options
Diffstat (limited to 'tinyXCAP/test/test_stack.h')
-rw-r--r-- | tinyXCAP/test/test_stack.h | 323 |
1 files changed, 323 insertions, 0 deletions
diff --git a/tinyXCAP/test/test_stack.h b/tinyXCAP/test/test_stack.h new file mode 100644 index 0000000..5d4eb1f --- /dev/null +++ b/tinyXCAP/test/test_stack.h @@ -0,0 +1,323 @@ +/*
+* Copyright (C) 2009 Mamadou Diop.
+*
+* Contact: Mamadou Diop <diopmamadou(at)doubango.org>
+*
+* This file is part of Open Source Doubango Framework.
+*
+* DOUBANGO is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* DOUBANGO is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with DOUBANGO.
+*
+*/
+#ifndef _TEST_STACK_H
+#define _TEST_STACK_H
+
+#define PAYLOAD_LIST "<list name=\"newlist\" xmlns=\"urn:ietf:params:xml:ns:resource-lists\">" \
+ "<display-name>newlist</display-name>" \
+ "</list>"
+#define PAYLOAD_ENTRY "<entry uri=\""XUI"\" xmlns=\"urn:ietf:params:xml:ns:resource-lists\">" \
+ "<display-name>"XUI"</display-name>" \
+ "</entry>"
+
+int test_stack_callback(const thttp_event_t *httpevent)
+{
+ switch(httpevent->type){
+ case thttp_event_message: /* New HTTP message */
+ {
+ if(THTTP_MESSAGE_IS_RESPONSE(httpevent->message)){
+ const thttp_header_ETag_t* etag;
+ TSK_DEBUG_INFO("=== %d ==> %s", THTTP_RESPONSE_CODE(httpevent->message), THTTP_MESSAGE_CONTENT(httpevent->message));
+ // You can use
+ if((etag = (const thttp_header_ETag_t*)thttp_message_get_header(httpevent->message, thttp_htype_ETag))){
+ TSK_DEBUG_INFO("Etag=%s", etag->value);
+ }
+ }
+ else{
+
+ }
+ break;
+ }
+
+ case thttp_event_auth_failed:
+ {
+ TSK_DEBUG_INFO("=== auth failed.");
+ break;
+ }
+
+ case thttp_event_closed: /* HTTP connection closed (informational) */
+ {
+ TSK_DEBUG_INFO("=== closed.");
+ break;
+ }
+
+ default:
+ {
+ break;
+ }
+ }
+ return 0;
+}
+
+void test_stack()
+{
+ txcap_stack_handle_t* stack = tsk_null;
+ int ret;
+
+ stack = txcap_stack_create(test_stack_callback, XUI, PASSWORD, XCAP_ROOT,
+#if defined(ANDROID)
+ TXCAP_STACK_SET_OPTION(TXCAP_STACK_OPTION_LOCAL_IP, "10.0.2.15"),
+#endif
+
+ // stack-level options
+ TXCAP_STACK_SET_OPTION(TXCAP_STACK_OPTION_TIMEOUT, "6000"),
+
+ // stack-level headers
+ TXCAP_STACK_SET_HEADER("Connection", "Keep-Alive"),
+ TXCAP_STACK_SET_HEADER("User-Agent", "XDM-client/OMA1.1"),
+ TXCAP_STACK_SET_HEADER("X-3GPP-Intended-Identity", XUI),
+
+ TXCAP_STACK_SET_NULL());
+
+ if((ret = txcap_stack_start(stack))){
+ goto bail;
+ }
+
+ /* add user auids */
+ txcap_stack_set(stack,
+ // add new AUIDs
+ TXCAP_STACK_SET_AUID("xcap-caps2", "application/xcap-caps2+xml", "urn:ietf:params:xml:ns:xcap-caps2", "index2", tsk_true),
+ TXCAP_STACK_SET_AUID("resource-lists2", "application/resource-lists+xml2", "urn:ietf:params:xml:ns:resource-lists2", "index2", tsk_false),
+
+ TXCAP_STACK_SET_NULL()); /* mandatory */
+
+ //== get xcap-caps document
+ ret = txcap_action_fetch_document(stack,
+ // action-level options
+ TXCAP_ACTION_SET_OPTION(TXCAP_ACTION_OPTION_TIMEOUT, "6000"),
+ // action-level headers
+ TXCAP_ACTION_SET_HEADER("Pragma", "No-Cache"),
+ // selector
+ TXCAP_ACTION_SET_SELECTOR("xcap-caps",
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+
+ getchar();
+/*
+ //== get resource-lists document
+ ret = txcap_action_fetch_document(stack,
+ // action-level options
+ TXCAP_ACTION_SET_OPTION(TXCAP_ACTION_OPTION_TIMEOUT, "6000"),
+ //action-level headers
+ TXCAP_ACTION_SET_HEADER("Pragma", "No-Cache"),
+ // selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+
+ getchar();
+
+ //== get 'rcs' list
+ ret = txcap_action_fetch_element(stack,
+ // action-level options
+ TXCAP_ACTION_SET_OPTION(TXCAP_ACTION_OPTION_TIMEOUT, "6000"),
+ // action-level headers
+ TXCAP_ACTION_SET_HEADER("Pragma", "No-Cache"),
+ // selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("list", "name", "rcs"),
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+
+ getchar();
+
+ //== Retrieve the 2nd list
+ ret = txcap_action_fetch_element(stack,
+ // action-level options
+ TXCAP_ACTION_SET_OPTION(TXCAP_ACTION_OPTION_TIMEOUT, "6000"),
+ // headers
+ TXCAP_ACTION_SET_HEADER("Pragma", "No-Cache"),
+ // action-level selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_POS("list", 2),
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+
+ getchar();
+
+ //== Retrieve the 4th list (wildcard)
+ ret = txcap_action_fetch_element(stack,
+ // action-level options
+ TXCAP_ACTION_SET_OPTION(TXCAP_ACTION_OPTION_TIMEOUT, "6000"),
+ // headers
+ TXCAP_ACTION_SET_HEADER("Pragma", "No-Cache"),
+ // action-level selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_POS("*", 4),
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+
+ getchar();
+
+ //== Retrieve the entry with: uri=XUI and list='rcs'
+ ret = txcap_action_fetch_element(stack,
+ // action-level options
+ TXCAP_ACTION_SET_OPTION(TXCAP_ACTION_OPTION_TIMEOUT, "6000"),
+ // headers
+ TXCAP_ACTION_SET_HEADER("Pragma", "No-Cache"),
+ // action-level selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("list", "name", "rcs"),
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("entry", "uri", XUI),
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+
+ getchar();
+
+ //== Retrieve XUI's display-name ==> 404
+ ret = txcap_action_fetch_attribute(stack,
+ // action-level options
+ TXCAP_ACTION_SET_OPTION(TXCAP_ACTION_OPTION_TIMEOUT, "6000"),
+ // headers
+ TXCAP_ACTION_SET_HEADER("Pragma", "No-Cache"),
+ // action-level selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("list", "name", "rcs"),
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("entry", "uri", XUI),
+ TXCAP_SELECTOR_NODE_SET_NAME("display-name"),
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+
+ getchar();
+
+ //== Retrieve the display-name of the fisrt entry from the 'rcs' list ==> 404
+ ret = txcap_action_fetch_attribute(stack,
+ // action-level options
+ TXCAP_ACTION_SET_OPTION(TXCAP_ACTION_OPTION_TIMEOUT, "6000"),
+ // headers
+ TXCAP_ACTION_SET_HEADER("Pragma", "No-Cache"),
+ // action-level selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("list", "name", "rcs"),
+ TXCAP_SELECTOR_NODE_SET_POS("entry", 1),
+ TXCAP_SELECTOR_NODE_SET_NAME("display-name"),
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+
+ getchar();
+
+ //== Retrieve the entry with: uri='XUI' from position 1 from 'rcs' list
+ ret = txcap_action_fetch_element(stack,
+ // action-level options
+ TXCAP_ACTION_SET_OPTION(TXCAP_ACTION_OPTION_TIMEOUT, "6000"),
+ // headers
+ TXCAP_ACTION_SET_HEADER("Pragma", "No-Cache"),
+ // action-level selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("list", "name", "rcs"),
+ TXCAP_SELECTOR_NODE_SET_POS_ATTRIBUTE("entry", 1, "uri", XUI),
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+
+ getchar();
+
+ //== Add newlist
+ ret = txcap_action_create_element(stack,
+ // selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("list", "name", "newlist"),
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // payload
+ TXCAP_ACTION_SET_PAYLOAD(PAYLOAD_LIST, strlen(PAYLOAD_LIST)),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+ getchar();
+
+ //== Add entry
+ ret = txcap_action_create_element(stack,
+ // selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("list", "name", "newlist"),
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("entry", "uri", XUI),
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // payload
+ TXCAP_ACTION_SET_PAYLOAD(PAYLOAD_ENTRY, strlen(PAYLOAD_ENTRY)),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+ getchar();
+
+ //== Add entry using dummy URI
+ ret = txcap_action_create_element(stack,
+ // dummy uri
+ TXCAP_ACTION_SET_REQUEST_URI("http://doubango.org/services/dummy/"XUI),
+ // payload
+ TXCAP_ACTION_SET_PAYLOAD(PAYLOAD_ENTRY, strlen(PAYLOAD_ENTRY)),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+ getchar();
+
+ //== Delete entry
+ ret = txcap_action_delete_element(stack,
+ // selector
+ TXCAP_ACTION_SET_SELECTOR("resource-lists",
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("list", "name", "newlist"),
+ TXCAP_SELECTOR_NODE_SET_ATTRIBUTE("entry", "uri", XUI),
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+ getchar();
+
+
+
+
+ ret = txcap_action_fetch_document(stack,
+ // action-level options
+ TXCAP_ACTION_SET_OPTION(TXCAP_ACTION_OPTION_TIMEOUT, "6000"),
+ //action-level headers
+ TXCAP_ACTION_SET_HEADER("Pragma", "No-Cache"),
+ // selector
+ TXCAP_ACTION_SET_SELECTOR("org.openmobilealliance.pres-content",
+ TXCAP_SELECTOR_NODE_SET_NULL()),
+ // ends parameters
+ TXCAP_ACTION_SET_NULL()
+ );
+ */
+bail:
+ getchar();
+
+
+ TSK_OBJECT_SAFE_FREE(stack);
+}
+
+#endif /* _TEST_STACK_H */
|