libpurple/tests/test_jabber_caps.c

Mon, 12 Aug 2013 00:26:10 +0530

author
Ankit Vani <a@nevitus.org>
date
Mon, 12 Aug 2013 00:26:10 +0530
branch
soc.2013.gobjectification.plugins
changeset 36519
8afeafb200c1
parent 34567
ea5103f66b0e
child 34935
686fa55b0deb
permissions
-rw-r--r--

Cancel pending dialogs and disconnect signals when removing a protocol

30507
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
1 #include <string.h>
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
2
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
3 #include "tests.h"
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
4 #include "../xmlnode.h"
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
5 #include "../protocols/jabber/caps.h"
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34564
diff changeset
6 #include "../ciphers/md5hash.h"
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34564
diff changeset
7 #include "../ciphers/sha1hash.h"
30507
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
8
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
9 START_TEST(test_parse_invalid)
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
10 {
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
11 xmlnode *query;
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
12
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
13 fail_unless(NULL == jabber_caps_parse_client_info(NULL));
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
14
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
15 /* Something other than a disco#info query */
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
16 query = xmlnode_new("foo");
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
17 fail_unless(NULL == jabber_caps_parse_client_info(query));
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
18 xmlnode_free(query);
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
19
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
20 query = xmlnode_new("query");
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
21 fail_unless(NULL == jabber_caps_parse_client_info(query));
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
22 xmlnode_set_namespace(query, "jabber:iq:last");
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
23 fail_unless(NULL == jabber_caps_parse_client_info(query));
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
24 xmlnode_free(query);
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
25 }
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
26 END_TEST
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
27
30508
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
28 #define assert_caps_calculate_match(hash_func, hash, str) { \
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
29 xmlnode *query = xmlnode_from_str((str), -1); \
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34564
diff changeset
30 PurpleHash *hasher = NULL; \
30508
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
31 JabberCapsClientInfo *info = jabber_caps_parse_client_info(query); \
34564
a1a571f18552 Fixed jabber tests to use the refactored jabber protocol
Ankit Vani <a@nevitus.org>
parents: 30508
diff changeset
32 gchar *got_hash; \
a1a571f18552 Fixed jabber tests to use the refactored jabber protocol
Ankit Vani <a@nevitus.org>
parents: 30508
diff changeset
33 if (g_str_equal(hash_func, "sha-1")) { \
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34564
diff changeset
34 hasher = purple_sha1_hash_new(); \
34564
a1a571f18552 Fixed jabber tests to use the refactored jabber protocol
Ankit Vani <a@nevitus.org>
parents: 30508
diff changeset
35 } else if (g_str_equal(hash_func, "md5")) { \
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34564
diff changeset
36 hasher = purple_md5_hash_new(); \
34564
a1a571f18552 Fixed jabber tests to use the refactored jabber protocol
Ankit Vani <a@nevitus.org>
parents: 30508
diff changeset
37 } \
a1a571f18552 Fixed jabber tests to use the refactored jabber protocol
Ankit Vani <a@nevitus.org>
parents: 30508
diff changeset
38 got_hash = jabber_caps_calculate_hash(info, hasher); \
a1a571f18552 Fixed jabber tests to use the refactored jabber protocol
Ankit Vani <a@nevitus.org>
parents: 30508
diff changeset
39 g_object_unref(hasher); \
30508
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
40 assert_string_equal_free((hash), got_hash); \
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
41 }
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
42
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
43 START_TEST(test_calculate_caps)
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
44 {
34564
a1a571f18552 Fixed jabber tests to use the refactored jabber protocol
Ankit Vani <a@nevitus.org>
parents: 30508
diff changeset
45 assert_caps_calculate_match("sha-1", "GNjxthSckUNvAIoCCJFttjl6VL8=",
30508
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
46 "<query xmlns='http://jabber.org/protocol/disco#info' node='http://tkabber.jabber.ru/#GNjxthSckUNvAIoCCJFttjl6VL8='><identity category='client' type='pc' name='Tkabber'/><x xmlns='jabber:x:data' type='result'><field var='FORM_TYPE' type='hidden'><value>urn:xmpp:dataforms:softwareinfo</value></field><field var='software'><value>Tkabber</value></field><field var='software_version'><value> ( 8.5.5 )</value></field><field var='os'><value>ATmega640-16AU</value></field><field var='os_version'><value/></field></x><feature var='games:board'/><feature var='google:mail:notify'/><feature var='http://jabber.org/protocol/activity'/><feature var='http://jabber.org/protocol/bytestreams'/><feature var='http://jabber.org/protocol/chatstates'/><feature var='http://jabber.org/protocol/commands'/><feature var='http://jabber.org/protocol/commands'/><feature var='http://jabber.org/protocol/disco#info'/><feature var='http://jabber.org/protocol/disco#items'/><feature var='http://jabber.org/protocol/feature-neg'/><feature var='http://jabber.org/protocol/geoloc'/><feature var='http://jabber.org/protocol/ibb'/><feature var='http://jabber.org/protocol/iqibb'/><feature var='http://jabber.org/protocol/mood'/><feature var='http://jabber.org/protocol/muc'/><feature var='http://jabber.org/protocol/mute#ancestor'/><feature var='http://jabber.org/protocol/mute#editor'/><feature var='http://jabber.org/protocol/rosterx'/><feature var='http://jabber.org/protocol/si'/><feature var='http://jabber.org/protocol/si/profile/file-transfer'/><feature var='http://jabber.org/protocol/tune'/><feature var='jabber:iq:avatar'/><feature var='jabber:iq:browse'/><feature var='jabber:iq:dtcp'/><feature var='jabber:iq:filexfer'/><feature var='jabber:iq:ibb'/><feature var='jabber:iq:inband'/><feature var='jabber:iq:jidlink'/><feature var='jabber:iq:last'/><feature var='jabber:iq:oob'/><feature var='jabber:iq:privacy'/><feature var='jabber:iq:time'/><feature var='jabber:iq:version'/><feature var='jabber:x:data'/><feature var='jabber:x:event'/><feature var='jabber:x:oob'/><feature var='urn:xmpp:ping'/><feature var='urn:xmpp:receipts'/><feature var='urn:xmpp:time'/></query>");
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
47 }
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
48 END_TEST
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
49
30507
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
50 Suite *
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
51 jabber_caps_suite(void)
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
52 {
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
53 Suite *s = suite_create("Jabber Caps Functions");
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
54
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
55 TCase *tc = tcase_create("Parsing invalid ndoes");
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
56 tcase_add_test(tc, test_parse_invalid);
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
57 suite_add_tcase(s, tc);
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
58
30508
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
59 tc = tcase_create("Calculating from XMLnode");
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
60 tcase_add_test(tc, test_calculate_caps);
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
61 suite_add_tcase(s, tc);
80ecb950263a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <darkrain42@pidgin.im>
parents: 30507
diff changeset
62
30507
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
63 return s;
10c522a4c93a jabber: Start adding some caps tests
Paul Aurich <darkrain42@pidgin.im>
parents:
diff changeset
64 }

mercurial