annotate libpurple/tests/test_jabber_caps.c @ 31172:e89df17f5ae7

certificate: Better validation of chains which have an intermediate signed w/ MD5. We already distribute the CAcert class 3 root as a trusted root. Newer versions of GnuTLS (combined with the changes to deal with MSN's cert breakage) require us to check if the last cert (not just its issuer) is in our trusted store.
author Paul Aurich <paul@darkrain42.org>
date Sun, 30 Jan 2011 17:51:02 +0000
parents 502b9d2f2d7a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30254
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
1 #include <string.h>
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
2
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
3 #include "tests.h"
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
4 #include "../xmlnode.h"
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
5 #include "../protocols/jabber/caps.h"
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
6
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
7 START_TEST(test_parse_invalid)
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
8 {
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
9 xmlnode *query;
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
10
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
11 fail_unless(NULL == jabber_caps_parse_client_info(NULL));
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
12
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
13 /* Something other than a disco#info query */
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
14 query = xmlnode_new("foo");
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
15 fail_unless(NULL == jabber_caps_parse_client_info(query));
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
16 xmlnode_free(query);
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
17
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
18 query = xmlnode_new("query");
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
19 fail_unless(NULL == jabber_caps_parse_client_info(query));
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
20 xmlnode_set_namespace(query, "jabber:iq:last");
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
21 fail_unless(NULL == jabber_caps_parse_client_info(query));
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
22 xmlnode_free(query);
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
23 }
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
24 END_TEST
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
25
30255
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
26 #define assert_caps_calculate_match(hash_func, hash, str) { \
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
27 xmlnode *query = xmlnode_from_str((str), -1); \
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
28 JabberCapsClientInfo *info = jabber_caps_parse_client_info(query); \
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
29 gchar *got_hash = jabber_caps_calculate_hash(info, (hash_func)); \
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
30 assert_string_equal_free((hash), got_hash); \
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
31 }
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
32
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
33 START_TEST(test_calculate_caps)
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
34 {
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
35 assert_caps_calculate_match("sha1", "GNjxthSckUNvAIoCCJFttjl6VL8=",
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
36 "<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>");
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
37 }
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
38 END_TEST
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
39
30254
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
40 Suite *
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
41 jabber_caps_suite(void)
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
42 {
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
43 Suite *s = suite_create("Jabber Caps Functions");
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
44
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
45 TCase *tc = tcase_create("Parsing invalid ndoes");
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
46 tcase_add_test(tc, test_parse_invalid);
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
47 suite_add_tcase(s, tc);
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
48
30255
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
49 tc = tcase_create("Calculating from XMLnode");
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
50 tcase_add_test(tc, test_calculate_caps);
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
51 suite_add_tcase(s, tc);
502b9d2f2d7a jabber: Don't crash on caps that include an empty <value/> in the Software Information extended info. Fixes #12292
Paul Aurich <paul@darkrain42.org>
parents: 30254
diff changeset
52
30254
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
53 return s;
6362579b3d2e jabber: Start adding some caps tests
Paul Aurich <paul@darkrain42.org>
parents:
diff changeset
54 }