# HG changeset patch # User Paul Aurich # Date 1278713643 0 # Node ID 6362579b3d2e73e7f1852a0fbd6c8293b8ff51ba # Parent 22afdd5a9290c9554409805c1e77cf21c1187350 jabber: Start adding some caps tests diff -r 22afdd5a9290 -r 6362579b3d2e libpurple/protocols/jabber/caps.c --- a/libpurple/protocols/jabber/caps.c Thu Jul 08 21:27:36 2010 +0000 +++ b/libpurple/protocols/jabber/caps.c Fri Jul 09 22:14:03 2010 +0000 @@ -41,14 +41,6 @@ static GHashTable *nodetable = NULL; /* char *node -> JabberCapsNodeExts */ static guint save_timer = 0; -/** - * Processes a query-node and returns a JabberCapsClientInfo object with all relevant info. - * - * @param query A query object. - * @return A JabberCapsClientInfo object. - */ -static JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query); - /* Free a GList of allocated char* */ static void free_string_glist(GList *list) @@ -764,13 +756,14 @@ return result; } -static JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query) +JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query) { xmlnode *child; JabberCapsClientInfo *info; - if (!query || strcmp(query->xmlns, NS_DISCO_INFO)) - return 0; + if (!query || !g_str_equal(query->name, "query") || + !purple_strequal(query->xmlns, NS_DISCO_INFO)) + return NULL; info = g_new0(JabberCapsClientInfo, 1); diff -r 22afdd5a9290 -r 6362579b3d2e libpurple/protocols/jabber/caps.h --- a/libpurple/protocols/jabber/caps.h Thu Jul 08 21:27:36 2010 +0000 +++ b/libpurple/protocols/jabber/caps.h Fri Jul 09 22:14:03 2010 +0000 @@ -115,4 +115,15 @@ */ void jabber_caps_broadcast_change(void); +/** + * Parse the element from an IQ stanza into a JabberCapsClientInfo + * struct. + * + * Exposed for tests + * + * @param query The 'query' element from an IQ reply stanza. + * @returns A JabberCapsClientInfo struct, or NULL on error + */ +JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query); + #endif /* PURPLE_JABBER_CAPS_H_ */ diff -r 22afdd5a9290 -r 6362579b3d2e libpurple/tests/Makefile.am --- a/libpurple/tests/Makefile.am Thu Jul 08 21:27:36 2010 +0000 +++ b/libpurple/tests/Makefile.am Fri Jul 09 22:14:03 2010 +0000 @@ -10,6 +10,7 @@ check_libpurple.c \ tests.h \ test_cipher.c \ + test_jabber_caps.c \ test_jabber_jutil.c \ test_jabber_scram.c \ test_qq.c \ diff -r 22afdd5a9290 -r 6362579b3d2e libpurple/tests/check_libpurple.c --- a/libpurple/tests/check_libpurple.c Thu Jul 08 21:27:36 2010 +0000 +++ b/libpurple/tests/check_libpurple.c Fri Jul 09 22:14:03 2010 +0000 @@ -84,6 +84,7 @@ sr = srunner_create (master_suite()); srunner_add_suite(sr, cipher_suite()); + srunner_add_suite(sr, jabber_caps_suite()); srunner_add_suite(sr, jabber_jutil_suite()); srunner_add_suite(sr, jabber_scram_suite()); srunner_add_suite(sr, qq_suite()); diff -r 22afdd5a9290 -r 6362579b3d2e libpurple/tests/test_jabber_caps.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/tests/test_jabber_caps.c Fri Jul 09 22:14:03 2010 +0000 @@ -0,0 +1,36 @@ +#include + +#include "tests.h" +#include "../xmlnode.h" +#include "../protocols/jabber/caps.h" + +START_TEST(test_parse_invalid) +{ + xmlnode *query; + + fail_unless(NULL == jabber_caps_parse_client_info(NULL)); + + /* Something other than a disco#info query */ + query = xmlnode_new("foo"); + fail_unless(NULL == jabber_caps_parse_client_info(query)); + xmlnode_free(query); + + query = xmlnode_new("query"); + fail_unless(NULL == jabber_caps_parse_client_info(query)); + xmlnode_set_namespace(query, "jabber:iq:last"); + fail_unless(NULL == jabber_caps_parse_client_info(query)); + xmlnode_free(query); +} +END_TEST + +Suite * +jabber_caps_suite(void) +{ + Suite *s = suite_create("Jabber Caps Functions"); + + TCase *tc = tcase_create("Parsing invalid ndoes"); + tcase_add_test(tc, test_parse_invalid); + suite_add_tcase(s, tc); + + return s; +} diff -r 22afdd5a9290 -r 6362579b3d2e libpurple/tests/tests.h --- a/libpurple/tests/tests.h Thu Jul 08 21:27:36 2010 +0000 +++ b/libpurple/tests/tests.h Fri Jul 09 22:14:03 2010 +0000 @@ -9,6 +9,7 @@ /* remember to add the suite to the runner in check_libpurple.c */ Suite * master_suite(void); Suite * cipher_suite(void); +Suite * jabber_caps_suite(void); Suite * jabber_jutil_suite(void); Suite * jabber_scram_suite(void); Suite * qq_suite(void);