]> git.proxmox.com Git - libgit2.git/blob - tests/network/urlparse.c
15707885af009f0cef781c286ae1e0c400b4cfe2
[libgit2.git] / tests / network / urlparse.c
1 #include "clar_libgit2.h"
2 #include "net.h"
3
4 static git_net_url conndata;
5
6 void test_network_urlparse__initialize(void)
7 {
8 memset(&conndata, 0, sizeof(conndata));
9 }
10
11 void test_network_urlparse__cleanup(void)
12 {
13 git_net_url_dispose(&conndata);
14 }
15
16 void test_network_urlparse__trivial(void)
17 {
18 cl_git_pass(git_net_url_parse(&conndata, "http://example.com/resource"));
19 cl_assert_equal_s(conndata.scheme, "http");
20 cl_assert_equal_s(conndata.host, "example.com");
21 cl_assert_equal_s(conndata.port, "80");
22 cl_assert_equal_s(conndata.path, "/resource");
23 cl_assert_equal_p(conndata.username, NULL);
24 cl_assert_equal_p(conndata.password, NULL);
25 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
26 }
27
28 void test_network_urlparse__root(void)
29 {
30 cl_git_pass(git_net_url_parse(&conndata, "http://example.com/"));
31 cl_assert_equal_s(conndata.scheme, "http");
32 cl_assert_equal_s(conndata.host, "example.com");
33 cl_assert_equal_s(conndata.port, "80");
34 cl_assert_equal_s(conndata.path, "/");
35 cl_assert_equal_p(conndata.username, NULL);
36 cl_assert_equal_p(conndata.password, NULL);
37 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
38 }
39
40 void test_network_urlparse__implied_root(void)
41 {
42 cl_git_pass(git_net_url_parse(&conndata, "http://example.com"));
43 cl_assert_equal_s(conndata.scheme, "http");
44 cl_assert_equal_s(conndata.host, "example.com");
45 cl_assert_equal_s(conndata.port, "80");
46 cl_assert_equal_s(conndata.path, "/");
47 cl_assert_equal_p(conndata.username, NULL);
48 cl_assert_equal_p(conndata.password, NULL);
49 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
50 }
51
52 void test_network_urlparse__implied_root_custom_port(void)
53 {
54 cl_git_pass(git_net_url_parse(&conndata, "http://example.com:42"));
55 cl_assert_equal_s(conndata.scheme, "http");
56 cl_assert_equal_s(conndata.host, "example.com");
57 cl_assert_equal_s(conndata.port, "42");
58 cl_assert_equal_s(conndata.path, "/");
59 cl_assert_equal_p(conndata.username, NULL);
60 cl_assert_equal_p(conndata.password, NULL);
61 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
62 }
63
64 void test_network_urlparse__implied_root_empty_port(void)
65 {
66 cl_git_pass(git_net_url_parse(&conndata, "http://example.com:"));
67 cl_assert_equal_s(conndata.scheme, "http");
68 cl_assert_equal_s(conndata.host, "example.com");
69 cl_assert_equal_s(conndata.port, "80");
70 cl_assert_equal_s(conndata.path, "/");
71 cl_assert_equal_p(conndata.username, NULL);
72 cl_assert_equal_p(conndata.password, NULL);
73 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
74 }
75
76 void test_network_urlparse__encoded_password(void)
77 {
78 cl_git_pass(git_net_url_parse(&conndata,
79 "https://user:pass%2fis%40bad@hostname.com:1234/"));
80 cl_assert_equal_s(conndata.scheme, "https");
81 cl_assert_equal_s(conndata.host, "hostname.com");
82 cl_assert_equal_s(conndata.port, "1234");
83 cl_assert_equal_s(conndata.path, "/");
84 cl_assert_equal_s(conndata.username, "user");
85 cl_assert_equal_s(conndata.password, "pass/is@bad");
86 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
87 }
88
89 void test_network_urlparse__user(void)
90 {
91 cl_git_pass(git_net_url_parse(&conndata,
92 "https://user@example.com/resource"));
93 cl_assert_equal_s(conndata.scheme, "https");
94 cl_assert_equal_s(conndata.host, "example.com");
95 cl_assert_equal_s(conndata.port, "443");
96 cl_assert_equal_s(conndata.path, "/resource");
97 cl_assert_equal_s(conndata.username, "user");
98 cl_assert_equal_p(conndata.password, NULL);
99 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
100 }
101
102 void test_network_urlparse__user_pass(void)
103 {
104 /* user:pass@hostname.tld/resource */
105 cl_git_pass(git_net_url_parse(&conndata,
106 "https://user:pass@example.com/resource"));
107 cl_assert_equal_s(conndata.scheme, "https");
108 cl_assert_equal_s(conndata.host, "example.com");
109 cl_assert_equal_s(conndata.port, "443");
110 cl_assert_equal_s(conndata.path, "/resource");
111 cl_assert_equal_s(conndata.username, "user");
112 cl_assert_equal_s(conndata.password, "pass");
113 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
114 }
115
116 void test_network_urlparse__port(void)
117 {
118 /* hostname.tld:port/resource */
119 cl_git_pass(git_net_url_parse(&conndata,
120 "https://example.com:9191/resource"));
121 cl_assert_equal_s(conndata.scheme, "https");
122 cl_assert_equal_s(conndata.host, "example.com");
123 cl_assert_equal_s(conndata.port, "9191");
124 cl_assert_equal_s(conndata.path, "/resource");
125 cl_assert_equal_p(conndata.username, NULL);
126 cl_assert_equal_p(conndata.password, NULL);
127 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
128 }
129
130 void test_network_urlparse__empty_port(void)
131 {
132 cl_git_pass(git_net_url_parse(&conndata, "http://example.com:/resource"));
133 cl_assert_equal_s(conndata.scheme, "http");
134 cl_assert_equal_s(conndata.host, "example.com");
135 cl_assert_equal_s(conndata.port, "80");
136 cl_assert_equal_s(conndata.path, "/resource");
137 cl_assert_equal_p(conndata.username, NULL);
138 cl_assert_equal_p(conndata.password, NULL);
139 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 1);
140 }
141
142 void test_network_urlparse__user_port(void)
143 {
144 /* user@hostname.tld:port/resource */
145 cl_git_pass(git_net_url_parse(&conndata,
146 "https://user@example.com:9191/resource"));
147 cl_assert_equal_s(conndata.scheme, "https");
148 cl_assert_equal_s(conndata.host, "example.com");
149 cl_assert_equal_s(conndata.port, "9191");
150 cl_assert_equal_s(conndata.path, "/resource");
151 cl_assert_equal_s(conndata.username, "user");
152 cl_assert_equal_p(conndata.password, NULL);
153 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
154 }
155
156 void test_network_urlparse__user_pass_port(void)
157 {
158 /* user:pass@hostname.tld:port/resource */
159 cl_git_pass(git_net_url_parse(&conndata,
160 "https://user:pass@example.com:9191/resource"));
161 cl_assert_equal_s(conndata.scheme, "https");
162 cl_assert_equal_s(conndata.host, "example.com");
163 cl_assert_equal_s(conndata.port, "9191");
164 cl_assert_equal_s(conndata.path, "/resource");
165 cl_assert_equal_s(conndata.username, "user");
166 cl_assert_equal_s(conndata.password, "pass");
167 cl_assert_equal_i(git_net_url_is_default_port(&conndata), 0);
168 }