annotate src/lib-http/test-http-url.c @ 15715:36ef72481934

Oops :) Update copyrights to 2013 without breaking all .c files.
author Timo Sirainen <tss@iki.fi>
date Sat, 02 Feb 2013 17:02:55 +0200
parents 90710c6c3beb
children ec9eab188dd8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15715
36ef72481934 Oops :) Update copyrights to 2013 without breaking all .c files.
Timo Sirainen <tss@iki.fi>
parents: 15714
diff changeset
1 /* Copyright (c) 2009-2013 Dovecot authors, see the included COPYING file */
15195
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
2
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
3 #include "lib.h"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
4 #include "net.h"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
5 #include "http-url.h"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
6 #include "test-common.h"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
7
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
8 struct valid_http_url_test {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
9 const char *url;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
10 enum http_url_parse_flags flags;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
11 struct http_url url_base;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
12
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
13 struct http_url url_parsed;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
14 };
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
15
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
16 /* Valid HTTP URL tests */
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
17 static struct valid_http_url_test valid_url_tests[] = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
18 /* Generic tests */
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
19 {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
20 .url = "http://localhost",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
21 .url_parsed = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
22 .host_name = "localhost" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
23 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
24 .url = "http://www.%65%78%61%6d%70%6c%65.com",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
25 .url_parsed = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
26 .host_name = "www.example.com" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
27 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
28 .url = "http://www.dovecot.org:8080",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
29 .url_parsed = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
30 .host_name = "www.dovecot.org",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
31 .port = 8080, .have_port = TRUE }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
32 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
33 .url = "http://127.0.0.1",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
34 .url_parsed = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
35 .host_name = "127.0.0.1",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
36 .have_host_ip = TRUE }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
37 #ifdef HAVE_IPV6
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
38 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
39 .url = "http://[::1]",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
40 .url_parsed = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
41 .host_name = "[::1]",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
42 .have_host_ip = TRUE }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
43 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
44 .url = "http://[::1]:8080",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
45 .url_parsed = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
46 .host_name = "[::1]",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
47 .have_host_ip = TRUE,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
48 .port = 8080, .have_port = TRUE }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
49 #endif
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
50 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
51 .url = "http://www.example.com/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
52 "?question=What%20are%20you%20doing%3f&answer=Nothing.",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
53 .url_parsed = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
54 .path = "/",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
55 .host_name = "www.example.com",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
56 .enc_query = "question=What%20are%20you%20doing%3f&answer=Nothing." }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
57 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
58 .url = "http://www.example.com/#Status%20of%20development",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
59 .flags = HTTP_URL_ALLOW_FRAGMENT_PART,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
60 .url_parsed = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
61 .path = "/",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
62 .host_name = "www.example.com",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
63 .enc_fragment = "Status%20of%20development" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
64
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
65
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
66 /* RFC 3986, Section 5.4. Reference Resolution Examples
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
67 *
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
68 * Within a representation with a well defined base URI of
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
69 *
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
70 * http://a/b/c/d;p?q
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
71 *
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
72 * a relative reference is transformed to its target URI as follows.
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
73 *
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
74 * 5.4.1. Normal Examples
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
75 */
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
76 },{ // "g" = "http://a/b/c/g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
77 .url = "g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
78 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
79 .url_parsed = { .host_name = "a", .path = "/b/c/g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
80 },{ // "./g" = "http://a/b/c/g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
81 .url = "./g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
82 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
83 .url_parsed = { .host_name = "a", .path = "/b/c/g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
84 },{ // "g/" = "http://a/b/c/g/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
85 .url = "g/",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
86 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
87 .url_parsed = { .host_name = "a", .path = "/b/c/g/" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
88 },{ // "/g" = "http://a/g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
89 .url = "/g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
90 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
91 .url_parsed = { .host_name = "a", .path = "/g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
92 },{ // "//g" = "http://g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
93 .url = "//g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
94 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
95 .url_parsed = { .host_name = "g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
96 },{ // "?y" = "http://a/b/c/d;p?y"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
97 .url = "?y",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
98 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
99 .url_parsed = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "y" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
100 },{ // "g?y" = "http://a/b/c/g?y"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
101 .url = "g?y",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
102 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
103 .url_parsed = { .host_name = "a", .path = "/b/c/g", .enc_query = "y" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
104 },{ // "#s" = "http://a/b/c/d;p?q#s"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
105 .url = "#s",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
106 .flags = HTTP_URL_ALLOW_FRAGMENT_PART,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
107 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
108 .url_parsed = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
109 .enc_fragment = "s" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
110 },{ // "g#s" = "http://a/b/c/g#s"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
111 .url = "g#s",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
112 .flags = HTTP_URL_ALLOW_FRAGMENT_PART,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
113 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
114 .url_parsed = { .host_name = "a", .path = "/b/c/g", .enc_fragment = "s" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
115
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
116 },{ // "g?y#s" = "http://a/b/c/g?y#s"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
117 .url = "g?y#s",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
118 .flags = HTTP_URL_ALLOW_FRAGMENT_PART,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
119 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
120 .url_parsed = { .host_name = "a", .path = "/b/c/g", .enc_query = "y",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
121 .enc_fragment = "s" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
122 },{ // ";x" = "http://a/b/c/;x"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
123 .url = ";x",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
124 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
125 .url_parsed = { .host_name = "a", .path = "/b/c/;x" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
126 },{ // "g;x" = "http://a/b/c/g;x"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
127 .url = "g;x",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
128 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
129 .url_parsed = { .host_name = "a", .path = "/b/c/g;x" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
130
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
131 },{ // "g;x?y#s" = "http://a/b/c/g;x?y#s"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
132 .url = "g;x?y#s",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
133 .flags = HTTP_URL_ALLOW_FRAGMENT_PART,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
134 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
135 .url_parsed = { .host_name = "a", .path = "/b/c/g;x", .enc_query = "y",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
136 .enc_fragment = "s" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
137 },{ // "" = "http://a/b/c/d;p?q"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
138 .url = "",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
139 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
140 .url_parsed = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
141 },{ // "." = "http://a/b/c/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
142 .url = ".",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
143 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
144 .url_parsed = { .host_name = "a", .path = "/b/c/" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
145 },{ // "./" = "http://a/b/c/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
146 .url = "./",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
147 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
148 .url_parsed = { .host_name = "a", .path = "/b/c/" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
149 },{ // ".." = "http://a/b/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
150 .url = "..",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
151 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
152 .url_parsed = { .host_name = "a", .path = "/b/" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
153 },{ // "../" = "http://a/b/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
154 .url = "../",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
155 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
156 .url_parsed = { .host_name = "a", .path = "/b/" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
157 },{ // "../g" = "http://a/b/g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
158 .url = "../g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
159 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
160 .url_parsed = { .host_name = "a", .path = "/b/g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
161 },{ // "../.." = "http://a/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
162 .url = "../..",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
163 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
164 .url_parsed = { .host_name = "a", .path = "/" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
165 },{ // "../../" = "http://a/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
166 .url = "../../",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
167 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
168 .url_parsed = { .host_name = "a", .path = "/" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
169 },{ // "../../g" = "http://a/g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
170 .url = "../../g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
171 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
172 .url_parsed = { .host_name = "a", .path = "/g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
173
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
174 /* 5.4.2. Abnormal Examples
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
175 */
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
176 },{ // "../../../g" = "http://a/g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
177 .url = "../../../g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
178 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
179 .url_parsed = { .host_name = "a", .path = "/g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
180 },{ // "../../../../g" = "http://a/g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
181 .url = "../../../../g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
182 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
183 .url_parsed = { .host_name = "a", .path = "/g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
184 },{ // "/./g" = "http://a/g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
185 .url = "/./g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
186 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
187 .url_parsed = { .host_name = "a", .path = "/g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
188 },{ // "/../g" = "http://a/g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
189 .url = "/../g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
190 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
191 .url_parsed = { .host_name = "a", .path = "/g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
192 },{ // "g." = "http://a/b/c/g."
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
193 .url = "g.",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
194 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
195 .url_parsed = { .host_name = "a", .path = "/b/c/g." }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
196 },{ // ".g" = "http://a/b/c/.g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
197 .url = ".g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
198 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
199 .url_parsed = { .host_name = "a", .path = "/b/c/.g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
200 },{ // "g.." = "http://a/b/c/g.."
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
201 .url = "g..",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
202 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
203 .url_parsed = { .host_name = "a", .path = "/b/c/g.." }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
204 },{ // "..g" = "http://a/b/c/..g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
205 .url = "..g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
206 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
207 .url_parsed = { .host_name = "a", .path = "/b/c/..g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
208 },{ // "./../g" = "http://a/b/g"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
209 .url = "./../g",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
210 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
211 .url_parsed = { .host_name = "a", .path = "/b/g" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
212 },{ // "./g/." = "http://a/b/c/g/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
213 .url = "./g/.",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
214 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
215 .url_parsed = { .host_name = "a", .path = "/b/c/g/" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
216 },{ // "g/./h" = "http://a/b/c/g/h"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
217 .url = "g/./h",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
218 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
219 .url_parsed = { .host_name = "a", .path = "/b/c/g/h" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
220 },{ // "g/../h" = "http://a/b/c/h"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
221 .url = "g/../h",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
222 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
223 .url_parsed = { .host_name = "a", .path = "/b/c/h" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
224 },{ // "g;x=1/./y" = "http://a/b/c/g;x=1/y"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
225 .url = "g;x=1/./y",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
226 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
227 .url_parsed = { .host_name = "a", .path = "/b/c/g;x=1/y" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
228 },{ // "g;x=1/../y" = "http://a/b/c/y"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
229 .url = "g;x=1/../y",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
230 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
231 .url_parsed = { .host_name = "a", .path = "/b/c/y" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
232 },{ // "g?y/./x" = "http://a/b/c/g?y/./x"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
233 .url = "g?y/./x",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
234 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
235 .url_parsed = { .host_name = "a", .path = "/b/c/g", .enc_query = "y/./x" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
236 },{ // "g?y/../x" = "http://a/b/c/g?y/../x"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
237 .url = "g?y/../x",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
238 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
239 .url_parsed = { .host_name = "a", .path = "/b/c/g", .enc_query = "y/../x" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
240 },{ // "g#s/./x" = "http://a/b/c/g#s/./x"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
241 .url = "g#s/./x",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
242 .flags = HTTP_URL_ALLOW_FRAGMENT_PART,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
243 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
244 .url_parsed =
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
245 { .host_name = "a", .path = "/b/c/g", .enc_fragment = "s/./x" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
246 },{ // "g#s/../x" = "http://a/b/c/g#s/../x"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
247 .url = "g#s/../x",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
248 .flags = HTTP_URL_ALLOW_FRAGMENT_PART,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
249 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" },
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
250 .url_parsed =
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
251 { .host_name = "a", .path = "/b/c/g", .enc_fragment = "s/../x" }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
252 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
253 };
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
254
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
255 static unsigned int valid_url_test_count = N_ELEMENTS(valid_url_tests);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
256
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
257 static void test_http_url_valid(void)
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
258 {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
259 unsigned int i;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
260
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
261 for (i = 0; i < valid_url_test_count; i++) T_BEGIN {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
262 const char *url = valid_url_tests[i].url;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
263 enum http_url_parse_flags flags = valid_url_tests[i].flags;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
264 struct http_url *urlt = &valid_url_tests[i].url_parsed;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
265 struct http_url *urlb = &valid_url_tests[i].url_base;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
266 struct http_url *urlp;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
267 const char *error = NULL;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
268
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
269 test_begin(t_strdup_printf("http url valid [%d]", i));
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
270
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
271 if (urlb->host_name == NULL) urlb = NULL;
15431
c9f6deb65d7b lib-http: http_url_parse() now returns the http_url allocated from given memory pool.
Timo Sirainen <tss@iki.fi>
parents: 15195
diff changeset
272 if (http_url_parse(url, urlb, flags, pool_datastack_create(), &urlp, &error) < 0)
15195
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
273 urlp = NULL;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
274
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
275 test_out_reason(t_strdup_printf("http_url_parse(%s)",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
276 valid_url_tests[i].url), urlp != NULL, error);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
277 if (urlp != NULL) {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
278 if (urlp->host_name == NULL || urlt->host_name == NULL) {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
279 test_out(t_strdup_printf("url->host_name = %s", urlp->host_name),
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
280 urlp->host_name == urlt->host_name);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
281 } else {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
282 test_out(t_strdup_printf("url->host_name = %s", urlp->host_name),
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
283 strcmp(urlp->host_name, urlt->host_name) == 0);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
284 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
285 if (!urlp->have_port) {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
286 test_out("url->port = (unspecified)",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
287 urlp->have_port == urlt->have_port);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
288 } else {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
289 test_out(t_strdup_printf("url->port = %u", urlp->port),
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
290 urlp->have_port == urlt->have_port && urlp->port == urlt->port);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
291 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
292 if (!urlp->have_host_ip) {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
293 test_out("url->host_ip = (unspecified)",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
294 urlp->have_host_ip == urlt->have_host_ip);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
295 } else {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
296 test_out("url->host_ip = (valid)",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
297 urlp->have_host_ip == urlt->have_host_ip);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
298 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
299 if (urlp->path == NULL || urlt->path == NULL) {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
300 test_out(t_strdup_printf("url->path = %s", urlp->path),
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
301 urlp->path == urlt->path);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
302 } else {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
303 test_out(t_strdup_printf("url->path = %s", urlp->path),
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
304 strcmp(urlp->path, urlt->path) == 0);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
305 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
306 if (urlp->enc_query == NULL || urlt->enc_query == NULL) {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
307 test_out(t_strdup_printf(
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
308 "url->enc_query = %s", urlp->enc_query),
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
309 urlp->enc_query == urlt->enc_query);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
310 } else {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
311 test_out(t_strdup_printf(
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
312 "url->enc_query = %s", urlp->enc_query),
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
313 strcmp(urlp->enc_query, urlt->enc_query) == 0);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
314 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
315 if (urlp->enc_fragment == NULL || urlt->enc_fragment == NULL) {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
316 test_out(t_strdup_printf(
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
317 "url->enc_fragment = %s", urlp->enc_fragment),
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
318 urlp->enc_fragment == urlt->enc_fragment);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
319 } else {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
320 test_out(t_strdup_printf(
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
321 "url->enc_fragment = %s", urlp->enc_fragment),
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
322 strcmp(urlp->enc_fragment, urlt->enc_fragment) == 0);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
323 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
324 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
325
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
326 test_end();
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
327 } T_END;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
328 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
329
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
330 struct invalid_http_url_test {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
331 const char *url;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
332 enum http_url_parse_flags flags;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
333 struct http_url url_base;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
334 };
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
335
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
336 static struct invalid_http_url_test invalid_url_tests[] = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
337 {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
338 .url = "imap://example.com/INBOX"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
339 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
340 .url = "http:/www.example.com"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
341 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
342 .url = ""
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
343 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
344 .url = "/index.html"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
345 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
346 .url = "http://www.example.com/index.html\""
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
347 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
348 .url = "http:///dovecot.org"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
349 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
350 .url = "http://[]/index.html"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
351 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
352 .url = "http://[v08.234:232:234:234:2221]/index.html"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
353 #ifdef HAVE_IPV6
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
354 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
355 .url = "http://[1::34a:34:234::6]/index.html"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
356 #endif
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
357 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
358 .url = "http://example%a.com/index.html"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
359 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
360 .url = "http://example.com%/index.html"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
361 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
362 .url = "http://example%00.com/index.html"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
363 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
364 .url = "http://example.com:65539/index.html"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
365 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
366 .url = "http://example.com/settings/%00/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
367 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
368 .url = "http://example.com/settings/%0r/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
369 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
370 .url = "http://example.com/settings/misc/%/"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
371 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
372 .url = "http://example.com/?%00"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
373 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
374 .url = "http://www.example.com/network.html#IMAP_Server"
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
375 },{
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
376 .url = "http://example.com/#%00",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
377 .flags = HTTP_URL_ALLOW_FRAGMENT_PART
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
378 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
379 };
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
380
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
381 static unsigned int invalid_url_test_count = N_ELEMENTS(invalid_url_tests);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
382
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
383 static void test_http_url_invalid(void)
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
384 {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
385 unsigned int i;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
386
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
387 for (i = 0; i < invalid_url_test_count; i++) T_BEGIN {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
388 const char *url = invalid_url_tests[i].url;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
389 enum http_url_parse_flags flags = invalid_url_tests[i].flags;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
390 struct http_url *urlb = &invalid_url_tests[i].url_base;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
391 struct http_url *urlp;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
392 const char *error = NULL;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
393
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
394 if (urlb->host_name == NULL)
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
395 urlb = NULL;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
396
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
397 test_begin(t_strdup_printf("http url invalid [%d]", i));
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
398
15431
c9f6deb65d7b lib-http: http_url_parse() now returns the http_url allocated from given memory pool.
Timo Sirainen <tss@iki.fi>
parents: 15195
diff changeset
399 if (http_url_parse(url, urlb, flags,
c9f6deb65d7b lib-http: http_url_parse() now returns the http_url allocated from given memory pool.
Timo Sirainen <tss@iki.fi>
parents: 15195
diff changeset
400 pool_datastack_create(), &urlp, &error) < 0)
15195
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
401 urlp = NULL;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
402 test_out_reason(t_strdup_printf("parse %s", url), urlp == NULL, error);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
403
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
404 test_end();
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
405 } T_END;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
406
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
407 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
408
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
409 static const char *parse_create_url_tests[] = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
410 "http://www.example.com/",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
411 "http://10.0.0.1/",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
412 #ifdef HAVE_IPV6
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
413 "http://[::1]/",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
414 #endif
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
415 "http://www.example.com:993/",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
416 "http://www.example.com/index.html",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
417 "http://www.example.com/settings/index.html",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
418 "http://ww.%23example.com/",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
419 "http://www.example.com/%23shared/news",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
420 "http://www.example.com/query.php?name=Hendrik%20Visser",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
421 "http://www.example.com/network.html#IMAP%20Server",
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
422 };
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
423
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
424 static unsigned int
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
425 parse_create_url_test_count = N_ELEMENTS(parse_create_url_tests);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
426
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
427 static void test_http_url_parse_create(void)
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
428 {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
429 unsigned int i;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
430
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
431 for (i = 0; i < parse_create_url_test_count; i++) T_BEGIN {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
432 const char *url = parse_create_url_tests[i];
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
433 struct http_url *urlp;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
434 const char *error = NULL;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
435
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
436 test_begin(t_strdup_printf("http url parse/create [%d]", i));
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
437
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
438 if (http_url_parse
15431
c9f6deb65d7b lib-http: http_url_parse() now returns the http_url allocated from given memory pool.
Timo Sirainen <tss@iki.fi>
parents: 15195
diff changeset
439 (url, NULL, HTTP_URL_ALLOW_FRAGMENT_PART,
c9f6deb65d7b lib-http: http_url_parse() now returns the http_url allocated from given memory pool.
Timo Sirainen <tss@iki.fi>
parents: 15195
diff changeset
440 pool_datastack_create(), &urlp, &error) < 0)
15195
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
441 urlp = NULL;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
442 test_out_reason(t_strdup_printf("parse %s", url), urlp != NULL, error);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
443 if (urlp != NULL) {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
444 const char *urlnew = http_url_create(urlp);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
445 test_out(t_strdup_printf
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
446 ("create %s", urlnew), strcmp(url, urlnew) == 0);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
447 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
448
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
449 test_end();
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
450 } T_END;
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
451
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
452 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
453
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
454 int main(void)
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
455 {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
456 static void (*test_functions[])(void) = {
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
457 test_http_url_valid,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
458 test_http_url_invalid,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
459 test_http_url_parse_create,
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
460 NULL
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
461 };
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
462 return test_run(test_functions);
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
463 }
70305d850220 Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
464