Mercurial > dovecot > core-2.2
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 |
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 |