]> git.proxmox.com Git - ceph.git/blame - ceph/src/civetweb/test/public_func.c
buildsys: switch source download to quincy
[ceph.git] / ceph / src / civetweb / test / public_func.c
CommitLineData
11fdf7f2 1/* Copyright (c) 2015-2017 the Civetweb developers\r
7c673cae
FG
2 *\r
3 * Permission is hereby granted, free of charge, to any person obtaining a copy\r
4 * of this software and associated documentation files (the "Software"), to deal\r
5 * in the Software without restriction, including without limitation the rights\r
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
7 * copies of the Software, and to permit persons to whom the Software is\r
8 * furnished to do so, subject to the following conditions:\r
9 *\r
10 * The above copyright notice and this permission notice shall be included in\r
11 * all copies or substantial portions of the Software.\r
12 *\r
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
19 * THE SOFTWARE.\r
20 */\r
21\r
22#ifdef _MSC_VER\r
23#ifndef _CRT_SECURE_NO_WARNINGS\r
24#define _CRT_SECURE_NO_WARNINGS\r
25#endif\r
26#endif\r
27\r
28#include <stdlib.h>\r
29#include <stdio.h>\r
30\r
31#include "public_func.h"\r
32#include <civetweb.h>\r
33\r
34/* This unit test file uses the excellent Check unit testing library.\r
35 * The API documentation is available here:\r
36 * http://check.sourceforge.net/doc/check_html/index.html\r
37 */\r
38\r
39START_TEST(test_mg_version)\r
40{\r
41 const char *ver = mg_version();\r
42 unsigned major = 0, minor = 0;\r
43 unsigned feature_files, feature_https, feature_cgi, feature_ipv6,\r
44 feature_websocket, feature_lua, feature_duktape, feature_caching;\r
45 unsigned expect_files = 0, expect_https = 0, expect_cgi = 0,\r
46 expect_ipv6 = 0, expect_websocket = 0, expect_lua = 0,\r
47 expect_duktape = 0, expect_caching = 0;\r
11fdf7f2
TL
48 int ret, len;\r
49 char *buf;\r
7c673cae
FG
50\r
51 ck_assert(ver != NULL);\r
52 ck_assert_str_eq(ver, CIVETWEB_VERSION);\r
53\r
54 /* check structure of version string */\r
55 ret = sscanf(ver, "%u.%u", &major, &minor);\r
56 ck_assert_int_eq(ret, 2);\r
57 ck_assert_uint_ge(major, 1);\r
58 if (major == 1) {\r
59 ck_assert_uint_ge(minor, 8); /* current version is 1.8 */\r
60 }\r
61\r
62 /* check feature */\r
63 feature_files = mg_check_feature(1);\r
64 feature_https = mg_check_feature(2);\r
65 feature_cgi = mg_check_feature(4);\r
66 feature_ipv6 = mg_check_feature(8);\r
67 feature_websocket = mg_check_feature(16);\r
68 feature_lua = mg_check_feature(32);\r
69 feature_duktape = mg_check_feature(64);\r
70 feature_caching = mg_check_feature(128);\r
71\r
72#if !defined(NO_FILES)\r
73 expect_files = 1;\r
74#endif\r
75#if !defined(NO_SSL)\r
76 expect_https = 1;\r
77#endif\r
78#if !defined(NO_CGI)\r
79 expect_cgi = 1;\r
80#endif\r
81#if defined(USE_IPV6)\r
82 expect_ipv6 = 1;\r
83#endif\r
84#if defined(USE_WEBSOCKET)\r
85 expect_websocket = 1;\r
86#endif\r
87#if defined(USE_LUA)\r
88 expect_lua = 1;\r
89#endif\r
90#if defined(USE_DUKTAPE)\r
91 expect_duktape = 1;\r
92#endif\r
93#if !defined(NO_CACHING)\r
94 expect_caching = 1;\r
95#endif\r
96\r
97 ck_assert_uint_eq(expect_files, !!feature_files);\r
98 ck_assert_uint_eq(expect_https, !!feature_https);\r
99 ck_assert_uint_eq(expect_cgi, !!feature_cgi);\r
100 ck_assert_uint_eq(expect_ipv6, !!feature_ipv6);\r
101 ck_assert_uint_eq(expect_websocket, !!feature_websocket);\r
102 ck_assert_uint_eq(expect_lua, !!feature_lua);\r
103 ck_assert_uint_eq(expect_duktape, !!feature_duktape);\r
104 ck_assert_uint_eq(expect_caching, !!feature_caching);\r
11fdf7f2
TL
105\r
106 /* get system information */\r
107 len = mg_get_system_info(NULL, 0);\r
108 ck_assert_int_gt(len, 0);\r
109 buf = (char *)malloc((unsigned)len + 1);\r
110 ck_assert_ptr_ne(buf, NULL);\r
111 ret = mg_get_system_info(buf, len + 1);\r
112 ck_assert_int_eq(len, ret);\r
113 ret = (int)strlen(buf);\r
114 ck_assert_int_eq(len, ret);\r
115 free(buf);\r
7c673cae
FG
116}\r
117END_TEST\r
118\r
119\r
120START_TEST(test_mg_get_valid_options)\r
121{\r
122 int i;\r
123 const struct mg_option *default_options = mg_get_valid_options();\r
124\r
125 ck_assert(default_options != NULL);\r
126\r
127 for (i = 0; default_options[i].name != NULL; i++) {\r
128 ck_assert(default_options[i].name != NULL);\r
129 ck_assert(strlen(default_options[i].name) > 0);\r
130 ck_assert(((int)default_options[i].type) > 0);\r
131 }\r
132\r
133 ck_assert(i > 0);\r
134}\r
135END_TEST\r
136\r
137\r
138START_TEST(test_mg_get_builtin_mime_type)\r
139{\r
140 ck_assert_str_eq(mg_get_builtin_mime_type("x.txt"), "text/plain");\r
141 ck_assert_str_eq(mg_get_builtin_mime_type("x.html"), "text/html");\r
142 ck_assert_str_eq(mg_get_builtin_mime_type("x.HTML"), "text/html");\r
143 ck_assert_str_eq(mg_get_builtin_mime_type("x.hTmL"), "text/html");\r
144 ck_assert_str_eq(mg_get_builtin_mime_type("/abc/def/ghi.htm"), "text/html");\r
145 ck_assert_str_eq(mg_get_builtin_mime_type("x.unknown_extention_xyz"),\r
146 "text/plain");\r
147}\r
148END_TEST\r
149\r
150\r
151START_TEST(test_mg_strncasecmp)\r
152{\r
153 ck_assert(mg_strncasecmp("abc", "abc", 3) == 0);\r
154 ck_assert(mg_strncasecmp("abc", "abcd", 3) == 0);\r
155 ck_assert(mg_strncasecmp("abc", "abcd", 4) != 0);\r
156 ck_assert(mg_strncasecmp("a", "A", 1) == 0);\r
157\r
158 ck_assert(mg_strncasecmp("A", "B", 1) < 0);\r
159 ck_assert(mg_strncasecmp("A", "b", 1) < 0);\r
160 ck_assert(mg_strncasecmp("a", "B", 1) < 0);\r
161 ck_assert(mg_strncasecmp("a", "b", 1) < 0);\r
162 ck_assert(mg_strncasecmp("b", "A", 1) > 0);\r
163 ck_assert(mg_strncasecmp("B", "A", 1) > 0);\r
164 ck_assert(mg_strncasecmp("b", "a", 1) > 0);\r
165 ck_assert(mg_strncasecmp("B", "a", 1) > 0);\r
166\r
167 ck_assert(mg_strncasecmp("xAx", "xBx", 3) < 0);\r
168 ck_assert(mg_strncasecmp("xAx", "xbx", 3) < 0);\r
169 ck_assert(mg_strncasecmp("xax", "xBx", 3) < 0);\r
170 ck_assert(mg_strncasecmp("xax", "xbx", 3) < 0);\r
171 ck_assert(mg_strncasecmp("xbx", "xAx", 3) > 0);\r
172 ck_assert(mg_strncasecmp("xBx", "xAx", 3) > 0);\r
173 ck_assert(mg_strncasecmp("xbx", "xax", 3) > 0);\r
174 ck_assert(mg_strncasecmp("xBx", "xax", 3) > 0);\r
175}\r
176END_TEST\r
177\r
178\r
179START_TEST(test_mg_get_cookie)\r
180{\r
181 char buf[32];\r
182 int ret;\r
183 const char *longcookie = "key1=1; key2=2; key3; key4=4; key5=; key6; "\r
184 "key7=this+is+it; key8=8; key9";\r
185\r
186 /* invalid result buffer */\r
187 ret = mg_get_cookie("", "notfound", NULL, 999);\r
188 ck_assert_int_eq(ret, -2);\r
189\r
190 /* zero size result buffer */\r
191 ret = mg_get_cookie("", "notfound", buf, 0);\r
192 ck_assert_int_eq(ret, -2);\r
193\r
194 /* too small result buffer */\r
195 ret = mg_get_cookie("key=toooooooooolong", "key", buf, 4);\r
196 ck_assert_int_eq(ret, -3);\r
197\r
198 /* key not found in string */\r
199 ret = mg_get_cookie("", "notfound", buf, sizeof(buf));\r
200 ck_assert_int_eq(ret, -1);\r
201\r
202 ret = mg_get_cookie(longcookie, "notfound", buf, sizeof(buf));\r
203 ck_assert_int_eq(ret, -1);\r
204\r
205 /* key not found in string */\r
206 ret = mg_get_cookie("key1=1; key2=2; key3=3", "notfound", buf, sizeof(buf));\r
207 ck_assert_int_eq(ret, -1);\r
208\r
209 /* keys are found as first, middle and last key */\r
210 memset(buf, 77, sizeof(buf));\r
211 ret = mg_get_cookie("key1=1; key2=2; key3=3", "key1", buf, sizeof(buf));\r
212 ck_assert_int_eq(ret, 1);\r
213 ck_assert_str_eq("1", buf);\r
214\r
215 memset(buf, 77, sizeof(buf));\r
216 ret = mg_get_cookie("key1=1; key2=2; key3=3", "key2", buf, sizeof(buf));\r
217 ck_assert_int_eq(ret, 1);\r
218 ck_assert_str_eq("2", buf);\r
219\r
220 memset(buf, 77, sizeof(buf));\r
221 ret = mg_get_cookie("key1=1; key2=2; key3=3", "key3", buf, sizeof(buf));\r
222 ck_assert_int_eq(ret, 1);\r
223 ck_assert_str_eq("3", buf);\r
224\r
225 /* longer value in the middle of a longer string */\r
226 memset(buf, 77, sizeof(buf));\r
227 ret = mg_get_cookie(longcookie, "key7", buf, sizeof(buf));\r
228 ck_assert_int_eq(ret, 10);\r
229 ck_assert_str_eq("this+is+it", buf);\r
230\r
231 /* key with = but without value in the middle of a longer string */\r
232 memset(buf, 77, sizeof(buf));\r
233 ret = mg_get_cookie(longcookie, "key5", buf, sizeof(buf));\r
234 ck_assert_int_eq(ret, 0);\r
235 ck_assert_str_eq("", buf);\r
236\r
237 /* key without = and without value in the middle of a longer string */\r
238 memset(buf, 77, sizeof(buf));\r
239 ret = mg_get_cookie(longcookie, "key6", buf, sizeof(buf));\r
240 ck_assert_int_eq(ret, -1);\r
241 /* TODO: mg_get_cookie and mg_get_var(2) should have the same behavior */\r
242}\r
243END_TEST\r
244\r
245\r
246START_TEST(test_mg_get_var)\r
247{\r
248 char buf[32];\r
249 int ret;\r
250 const char *shortquery = "key1=1&key2=2&key3=3";\r
251 const char *longquery = "key1=1&key2=2&key3&key4=4&key5=&key6&"\r
252 "key7=this+is+it&key8=8&key9&&key10=&&"\r
253 "key7=that+is+it&key12=12";\r
254\r
255 /* invalid result buffer */\r
256 ret = mg_get_var2("", 0, "notfound", NULL, 999, 0);\r
257 ck_assert_int_eq(ret, -2);\r
258\r
259 /* zero size result buffer */\r
260 ret = mg_get_var2("", 0, "notfound", buf, 0, 0);\r
261 ck_assert_int_eq(ret, -2);\r
262\r
263 /* too small result buffer */\r
264 ret = mg_get_var2("key=toooooooooolong", 19, "key", buf, 4, 0);\r
265 /* ck_assert_int_eq(ret, -3);\r
266 --> TODO: mg_get_cookie returns -3, mg_get_var -2. This should be\r
267 unified. */\r
268 ck_assert(ret < 0);\r
269\r
270 /* key not found in string */\r
271 ret = mg_get_var2("", 0, "notfound", buf, sizeof(buf), 0);\r
272 ck_assert_int_eq(ret, -1);\r
273\r
274 ret = mg_get_var2(\r
275 longquery, strlen(longquery), "notfound", buf, sizeof(buf), 0);\r
276 ck_assert_int_eq(ret, -1);\r
277\r
278 /* key not found in string */\r
279 ret = mg_get_var2(\r
280 shortquery, strlen(shortquery), "notfound", buf, sizeof(buf), 0);\r
281 ck_assert_int_eq(ret, -1);\r
282\r
283 /* key not found in string */\r
284 ret = mg_get_var2("key1=1&key2=2&key3=3&notfound=here",\r
285 strlen(shortquery),\r
286 "notfound",\r
287 buf,\r
288 sizeof(buf),\r
289 0);\r
290 ck_assert_int_eq(ret, -1);\r
291\r
292 /* key not found in string */\r
293 ret = mg_get_var2(\r
294 shortquery, strlen(shortquery), "key1", buf, sizeof(buf), 1);\r
295 ck_assert_int_eq(ret, -1);\r
296\r
297 /* keys are found as first, middle and last key */\r
298 memset(buf, 77, sizeof(buf));\r
299 ret = mg_get_var2(\r
300 shortquery, strlen(shortquery), "key1", buf, sizeof(buf), 0);\r
301 ck_assert_int_eq(ret, 1);\r
302 ck_assert_str_eq("1", buf);\r
303\r
304 memset(buf, 77, sizeof(buf));\r
305 ret = mg_get_var2(\r
306 shortquery, strlen(shortquery), "key2", buf, sizeof(buf), 0);\r
307 ck_assert_int_eq(ret, 1);\r
308 ck_assert_str_eq("2", buf);\r
309\r
310 memset(buf, 77, sizeof(buf));\r
311 ret = mg_get_var2(\r
312 shortquery, strlen(shortquery), "key3", buf, sizeof(buf), 0);\r
313 ck_assert_int_eq(ret, 1);\r
314 ck_assert_str_eq("3", buf);\r
315\r
316 /* mg_get_var call mg_get_var2 with last argument 0 */\r
317 memset(buf, 77, sizeof(buf));\r
318 ret = mg_get_var(shortquery, strlen(shortquery), "key1", buf, sizeof(buf));\r
319 ck_assert_int_eq(ret, 1);\r
320 ck_assert_str_eq("1", buf);\r
321\r
322 /* longer value in the middle of a longer string */\r
323 memset(buf, 77, sizeof(buf));\r
324 ret =\r
325 mg_get_var2(longquery, strlen(longquery), "key7", buf, sizeof(buf), 0);\r
326 ck_assert_int_eq(ret, 10);\r
327 ck_assert_str_eq("this is it", buf);\r
328\r
329 /* longer value in the middle of a longer string - seccond occurance of key\r
330 */\r
331 memset(buf, 77, sizeof(buf));\r
332 ret =\r
333 mg_get_var2(longquery, strlen(longquery), "key7", buf, sizeof(buf), 1);\r
334 ck_assert_int_eq(ret, 10);\r
335 ck_assert_str_eq("that is it", buf);\r
336\r
337 /* key with = but without value in the middle of a longer string */\r
338 memset(buf, 77, sizeof(buf));\r
339 ret =\r
340 mg_get_var2(longquery, strlen(longquery), "key5", buf, sizeof(buf), 0);\r
341 ck_assert_int_eq(ret, 0);\r
342 ck_assert_str_eq(buf, "");\r
343\r
344 /* key without = and without value in the middle of a longer string */\r
345 memset(buf, 77, sizeof(buf));\r
346 ret =\r
347 mg_get_var2(longquery, strlen(longquery), "key6", buf, sizeof(buf), 0);\r
348 ck_assert_int_eq(ret, -1);\r
349 ck_assert_str_eq(buf, "");\r
350 /* TODO: this is the same situation as with mg_get_value */\r
351}\r
352END_TEST\r
353\r
354\r
355START_TEST(test_mg_md5)\r
356{\r
357 char buf[33];\r
358 char *ret;\r
359 const char *long_str =\r
360 "_123456789A123456789B123456789C123456789D123456789E123456789F123456789"\r
361 "G123456789H123456789I123456789J123456789K123456789L123456789M123456789"\r
362 "N123456789O123456789P123456789Q123456789R123456789S123456789T123456789"\r
363 "U123456789V123456789W123456789X123456789Y123456789Z";\r
364\r
365 memset(buf, 77, sizeof(buf));\r
366 ret = mg_md5(buf, NULL);\r
367 ck_assert_str_eq(buf, "d41d8cd98f00b204e9800998ecf8427e");\r
368 ck_assert_str_eq(ret, "d41d8cd98f00b204e9800998ecf8427e");\r
369 ck_assert_ptr_eq(ret, buf);\r
370\r
371 memset(buf, 77, sizeof(buf));\r
372 ret = mg_md5(buf, "The quick brown fox jumps over the lazy dog.", NULL);\r
373 ck_assert_str_eq(buf, "e4d909c290d0fb1ca068ffaddf22cbd0");\r
374 ck_assert_str_eq(ret, "e4d909c290d0fb1ca068ffaddf22cbd0");\r
375 ck_assert_ptr_eq(ret, buf);\r
376\r
377 memset(buf, 77, sizeof(buf));\r
378 ret = mg_md5(buf,\r
379 "",\r
380 "The qu",\r
381 "ick bro",\r
382 "",\r
383 "wn fox ju",\r
384 "m",\r
385 "ps over the la",\r
386 "",\r
387 "",\r
388 "zy dog.",\r
389 "",\r
390 NULL);\r
391 ck_assert_str_eq(buf, "e4d909c290d0fb1ca068ffaddf22cbd0");\r
392 ck_assert_str_eq(ret, "e4d909c290d0fb1ca068ffaddf22cbd0");\r
393 ck_assert_ptr_eq(ret, buf);\r
394\r
395 memset(buf, 77, sizeof(buf));\r
396 ret = mg_md5(buf, long_str, NULL);\r
397 ck_assert_str_eq(buf, "1cb13cf9f16427807f081b2138241f08");\r
398 ck_assert_str_eq(ret, "1cb13cf9f16427807f081b2138241f08");\r
399 ck_assert_ptr_eq(ret, buf);\r
400\r
401 memset(buf, 77, sizeof(buf));\r
402 ret = mg_md5(buf, long_str + 1, NULL);\r
403 ck_assert_str_eq(buf, "cf62d3264334154f5779d3694cc5093f");\r
404 ck_assert_str_eq(ret, "cf62d3264334154f5779d3694cc5093f");\r
405 ck_assert_ptr_eq(ret, buf);\r
406}\r
407END_TEST\r
408\r
409\r
410START_TEST(test_mg_url_encode)\r
411{\r
412 char buf[20];\r
413 int ret;\r
414\r
415 memset(buf, 77, sizeof(buf));\r
416 ret = mg_url_encode("abc", buf, sizeof(buf));\r
417 ck_assert_int_eq(3, ret);\r
418 ck_assert_str_eq("abc", buf);\r
419\r
420 memset(buf, 77, sizeof(buf));\r
421 ret = mg_url_encode("a%b/c&d.e", buf, sizeof(buf));\r
422 ck_assert_int_eq(15, ret);\r
423 ck_assert_str_eq("a%25b%2fc%26d.e", buf);\r
424\r
425 memset(buf, 77, sizeof(buf));\r
426 ret = mg_url_encode("%%%", buf, 4);\r
427 ck_assert_int_eq(-1, ret);\r
428 ck_assert_str_eq("%25", buf);\r
429}\r
430END_TEST\r
431\r
432\r
433START_TEST(test_mg_url_decode)\r
434{\r
435 char buf[20];\r
436 int ret;\r
437\r
438 ret = mg_url_decode("abc", 3, buf, sizeof(buf), 0);\r
439 ck_assert_int_eq(ret, 3);\r
440 ck_assert_str_eq(buf, "abc");\r
441\r
442 ret = mg_url_decode("abcdef", 3, buf, sizeof(buf), 0);\r
443 ck_assert_int_eq(ret, 3);\r
444 ck_assert_str_eq(buf, "abc");\r
445\r
446 ret = mg_url_decode("x+y", 3, buf, sizeof(buf), 0);\r
447 ck_assert_int_eq(ret, 3);\r
448 ck_assert_str_eq(buf, "x+y");\r
449\r
450 ret = mg_url_decode("x+y", 3, buf, sizeof(buf), 1);\r
451 ck_assert_int_eq(ret, 3);\r
452 ck_assert_str_eq(buf, "x y");\r
453\r
454 ret = mg_url_decode("%25", 3, buf, sizeof(buf), 1);\r
455 ck_assert_int_eq(ret, 1);\r
456 ck_assert_str_eq(buf, "%");\r
457}\r
458END_TEST\r
459\r
460\r
461START_TEST(test_mg_get_response_code_text)\r
462{\r
463 int i;\r
464 size_t j, len;\r
465 const char *resp;\r
466\r
467 for (i = 100; i < 600; i++) {\r
468 resp = mg_get_response_code_text(NULL, i);\r
469 ck_assert_ptr_ne(resp, NULL);\r
470 len = strlen(resp);\r
471 ck_assert_uint_gt(len, 1);\r
472 ck_assert_uint_lt(len, 32);\r
473 for (j = 0; j < len; j++) {\r
474 if (resp[j] == ' ') {\r
475 /* space is valid */\r
476 } else if (resp[j] == '-') {\r
477 /* hyphen is valid */\r
478 } else if (resp[j] >= 'A' && resp[j] <= 'Z') {\r
479 /* A-Z is valid */\r
480 } else if (resp[j] >= 'a' && resp[j] <= 'z') {\r
481 /* a-z is valid */\r
482 } else {\r
483 ck_abort_msg("Found letter %c (%02xh) in %s",\r
484 resp[j],\r
485 resp[j],\r
486 resp);\r
487 }\r
488 }\r
489 }\r
490}\r
491END_TEST\r
492\r
493\r
11fdf7f2 494#if !defined(REPLACE_CHECK_FOR_LOCAL_DEBUGGING)\r
7c673cae
FG
495Suite *\r
496make_public_func_suite(void)\r
497{\r
498 Suite *const suite = suite_create("PublicFunc");\r
499\r
500 TCase *const tcase_version = tcase_create("Version");\r
501 TCase *const tcase_get_valid_options = tcase_create("Options");\r
502 TCase *const tcase_get_builtin_mime_type = tcase_create("MIME types");\r
503 TCase *const tcase_strncasecmp = tcase_create("strcasecmp");\r
504 TCase *const tcase_urlencodingdecoding =\r
505 tcase_create("URL encoding decoding");\r
506 TCase *const tcase_cookies = tcase_create("Cookies and variables");\r
507 TCase *const tcase_md5 = tcase_create("MD5");\r
508 TCase *const tcase_aux = tcase_create("Aux functions");\r
509\r
510 tcase_add_test(tcase_version, test_mg_version);\r
511 tcase_set_timeout(tcase_version, civetweb_min_test_timeout);\r
512 suite_add_tcase(suite, tcase_version);\r
513\r
514 tcase_add_test(tcase_get_valid_options, test_mg_get_valid_options);\r
515 tcase_set_timeout(tcase_get_valid_options, civetweb_min_test_timeout);\r
516 suite_add_tcase(suite, tcase_get_valid_options);\r
517\r
518 tcase_add_test(tcase_get_builtin_mime_type, test_mg_get_builtin_mime_type);\r
519 tcase_set_timeout(tcase_get_builtin_mime_type, civetweb_min_test_timeout);\r
520 suite_add_tcase(suite, tcase_get_builtin_mime_type);\r
521\r
522 tcase_add_test(tcase_strncasecmp, test_mg_strncasecmp);\r
523 tcase_set_timeout(tcase_strncasecmp, civetweb_min_test_timeout);\r
524 suite_add_tcase(suite, tcase_strncasecmp);\r
525\r
526 tcase_add_test(tcase_urlencodingdecoding, test_mg_url_encode);\r
527 tcase_add_test(tcase_urlencodingdecoding, test_mg_url_decode);\r
528 tcase_set_timeout(tcase_urlencodingdecoding, civetweb_min_test_timeout);\r
529 suite_add_tcase(suite, tcase_urlencodingdecoding);\r
530\r
531 tcase_add_test(tcase_cookies, test_mg_get_cookie);\r
532 tcase_add_test(tcase_cookies, test_mg_get_var);\r
533 tcase_set_timeout(tcase_cookies, civetweb_min_test_timeout);\r
534 suite_add_tcase(suite, tcase_cookies);\r
535\r
536 tcase_add_test(tcase_md5, test_mg_md5);\r
537 tcase_set_timeout(tcase_md5, civetweb_min_test_timeout);\r
538 suite_add_tcase(suite, tcase_md5);\r
539\r
540 tcase_add_test(tcase_aux, test_mg_get_response_code_text);\r
541 tcase_set_timeout(tcase_aux, civetweb_min_test_timeout);\r
542 suite_add_tcase(suite, tcase_aux);\r
543\r
544 return suite;\r
545}\r
11fdf7f2 546#endif\r