~vish/ubuntu/maverick/pidgin/bug25979

« back to all changes in this revision

Viewing changes to libpurple/tests/test_jabber_jutil.c

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2009-10-09 19:40:26 UTC
  • mfrom: (1.4.1 upstream) (46.1.10 karmic)
  • Revision ID: james.westby@ubuntu.com-20091009194026-wbqqh0bsbz19nx5q
Tags: 1:2.6.2-1ubuntu7
* Don't stick the buddy list window to all desktops as some
  window managers have trouble to properly unstick it (LP: #346840)
  - debian/patches/11_buddy_list_really_show.patch
* Always use default tray icon size on KDE (LP: #209440)
  - debian/patches/62_tray_icon_size_kde.patch
* Use scrollbars in the preferences dialog if the screen height is
  below 700 px instead of 600 px
  - debian/patches/60_1024x600_gtkprefs.c.patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
        longnode = g_strnfill(1023, 'a');
45
45
        fail_unless(jabber_nodeprep_validate(longnode));
46
46
        g_free(longnode);
 
47
 
 
48
        longnode = g_strnfill(1024, 'a');
 
49
        fail_if(jabber_nodeprep_validate(longnode));
 
50
        g_free(longnode);
47
51
}
48
52
END_TEST
49
53
 
68
72
}
69
73
END_TEST
70
74
 
 
75
#define assert_valid_jid(str) { \
 
76
        JabberID *jid = jabber_id_new(str); \
 
77
        fail_if(jid == NULL, "JID '%s' is valid but jabber_id_new() rejected it", str); \
 
78
        jabber_id_free(jid); \
 
79
}
 
80
 
 
81
#define assert_invalid_jid(str) { \
 
82
        JabberID *jid = jabber_id_new(str); \
 
83
        fail_if(jid != NULL, "JID '%s' is invalid but jabber_id_new() allowed it", str); \
 
84
        jabber_id_free(jid); \
 
85
}
 
86
 
 
87
#define assert_jid_parts(expect_node, expect_domain, str) { \
 
88
        JabberID *jid = jabber_id_new(str); \
 
89
        fail_if(jid == NULL, "JID '%s' is valid but jabber_id_new() rejected it", str); \
 
90
        fail_if(jid->node == NULL,     "JID '%s' is valid but jabber_id_new() didn't return a node", str); \
 
91
        fail_if(jid->domain == NULL,   "JID '%s' is valid but jabber_id_new() didn't return a domain", str); \
 
92
        fail_if(jid->resource != NULL, "JID '%s' doesn't contain a resource", str); \
 
93
        assert_string_equal(expect_node, jid->node); \
 
94
        assert_string_equal(expect_domain, jid->domain); \
 
95
        jabber_id_free(jid); \
 
96
}
 
97
 
 
98
START_TEST(test_jabber_id_new)
 
99
{
 
100
        assert_valid_jid("gmail.com");
 
101
        assert_valid_jid("gmail.com/Test");
 
102
        assert_valid_jid("gmail.com/Test@");
 
103
        assert_valid_jid("gmail.com/@");
 
104
        assert_valid_jid("gmail.com/Test@alkjaweflkj");
 
105
        assert_valid_jid("mark.doliner@gmail.com");
 
106
        assert_valid_jid("mark.doliner@gmail.com/Test12345");
 
107
        assert_valid_jid("mark.doliner@gmail.com/Test@12345");
 
108
        assert_valid_jid("mark.doliner@gmail.com/Te/st@12@//345");
 
109
        assert_valid_jid("わいど@conference.jabber.org");
 
110
        assert_valid_jid("まりるーむ@conference.jabber.org");
 
111
        assert_valid_jid("mark.doliner@gmail.com/まりるーむ");
 
112
        assert_valid_jid("mark.doliner@gmail/stuff.org");
 
113
        assert_valid_jid("stuart@nödåtXäYZ.se");
 
114
        assert_valid_jid("stuart@nödåtXäYZ.se/まりるーむ");
 
115
        assert_valid_jid("mark.doliner@わいど.org");
 
116
        assert_valid_jid("nick@まつ.おおかみ.net");
 
117
        assert_valid_jid("paul@10.0.42.230/s");
 
118
        assert_valid_jid("paul@[::1]"); /* IPv6 */
 
119
        assert_valid_jid("paul@[2001:470:1f05:d58::2]");
 
120
        assert_valid_jid("paul@[2001:470:1f05:d58::2]/foo");
 
121
 
 
122
        assert_invalid_jid("@gmail.com");
 
123
        assert_invalid_jid("@@gmail.com");
 
124
        assert_invalid_jid("mark.doliner@@gmail.com/Test12345");
 
125
        assert_invalid_jid("mark@doliner@gmail.com/Test12345");
 
126
        assert_invalid_jid("@gmail.com/Test@12345");
 
127
        assert_invalid_jid("/Test@12345");
 
128
        assert_invalid_jid("mark.doliner@");
 
129
        assert_invalid_jid("mark.doliner/");
 
130
        assert_invalid_jid("mark.doliner@gmail_stuff.org");
 
131
        assert_invalid_jid("mark.doliner@gmail[stuff.org");
 
132
        assert_invalid_jid("mark.doliner@gmail\\stuff.org");
 
133
        assert_invalid_jid("paul@[::1]124");
 
134
        assert_invalid_jid("paul@2[::1]124/as");
 
135
 
 
136
        /* Ensure that jabber_id_new is properly lowercasing node and domains */
 
137
        assert_jid_parts("paul", "darkrain42.org", "PaUL@darkrain42.org");
 
138
        assert_jid_parts("paul", "darkrain42.org", "paul@DaRkRaIn42.org");
 
139
 
 
140
        /* These case-mapping tests culled from examining RFC3454 B.2 */
 
141
 
 
142
        /* Cyrillic capital EF (U+0424) maps to lowercase EF (U+0444) */
 
143
        assert_jid_parts("ф", "darkrain42.org", "Ф@darkrain42.org");
 
144
        /*
 
145
         * These character (U+A664 and U+A665) are not mapped to anything in
 
146
         * RFC3454 B.2. This first test *fails* when not using IDN because glib's
 
147
         * case-folding/utf8_strdown improperly lowercases the character.
 
148
         */
 
149
        assert_jid_parts("Ꙥ", "darkrain42.org", "Ꙥ@darkrain42.org");
 
150
        assert_jid_parts("ꙥ", "darkrain42.org", "ꙥ@darkrain42.org");
 
151
        /* U+04E9 to U+04E9 */
 
152
        assert_jid_parts("paul", "өarkrain42.org", "paul@Өarkrain42.org");
 
153
}
 
154
END_TEST
 
155
 
 
156
START_TEST(test_jabber_normalize)
 
157
{
 
158
        assert_string_equal("paul@darkrain42.org", jabber_normalize(NULL, "PaUL@DaRkRain42.org"));
 
159
        assert_string_equal("paul@darkrain42.org", jabber_normalize(NULL, "PaUL@DaRkRain42.org/"));
 
160
        assert_string_equal("paul@darkrain42.org", jabber_normalize(NULL, "PaUL@DaRkRain42.org/resource"));
 
161
}
 
162
END_TEST
 
163
 
71
164
Suite *
72
165
jabber_jutil_suite(void)
73
166
{
82
175
        tcase_add_test(tc, test_get_bare_jid);
83
176
        suite_add_tcase(s, tc);
84
177
 
85
 
        tc = tcase_create("Nodeprep validate");
 
178
        tc = tcase_create("JID validate");
86
179
        tcase_add_test(tc, test_nodeprep_validate);
87
180
        tcase_add_test(tc, test_nodeprep_validate_illegal_chars);
88
181
        tcase_add_test(tc, test_nodeprep_validate_too_long);
 
182
        tcase_add_test(tc, test_jabber_id_new);
 
183
        tcase_add_test(tc, test_jabber_normalize);
89
184
        suite_add_tcase(s, tc);
90
185
 
91
186
        return s;