]>
git.proxmox.com Git - libgit2.git/blob - tests/network/urlparse.c
15707885af009f0cef781c286ae1e0c400b4cfe2
1 #include "clar_libgit2.h"
4 static git_net_url conndata
;
6 void test_network_urlparse__initialize(void)
8 memset(&conndata
, 0, sizeof(conndata
));
11 void test_network_urlparse__cleanup(void)
13 git_net_url_dispose(&conndata
);
16 void test_network_urlparse__trivial(void)
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);
28 void test_network_urlparse__root(void)
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);
40 void test_network_urlparse__implied_root(void)
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);
52 void test_network_urlparse__implied_root_custom_port(void)
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);
64 void test_network_urlparse__implied_root_empty_port(void)
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);
76 void test_network_urlparse__encoded_password(void)
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);
89 void test_network_urlparse__user(void)
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);
102 void test_network_urlparse__user_pass(void)
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);
116 void test_network_urlparse__port(void)
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);
130 void test_network_urlparse__empty_port(void)
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);
142 void test_network_urlparse__user_port(void)
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);
156 void test_network_urlparse__user_pass_port(void)
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);