960 std::string s(
"http://www.facebook.com/hello/world?query#fragment");
961 Uri u = Uri::parse(s);
965 EXPECT_EQ(
"www.facebook.com", u.getHost());
967 EXPECT_EQ(
"www.facebook.com", u.getAuthority());
975 std::string s(
"http://www.facebook.com:8080/hello/world?query#fragment");
976 Uri u = Uri::parse(s);
980 EXPECT_EQ(
"www.facebook.com", u.getHost());
982 EXPECT_EQ(
"www.facebook.com:8080", u.getAuthority());
990 std::string s(
"http://127.0.0.1:8080/hello/world?query#fragment");
991 Uri u = Uri::parse(s);
997 EXPECT_EQ(
"127.0.0.1:8080", u.getAuthority());
1005 std::string s(
"http://[::1]:8080/hello/world?query#fragment");
1006 Uri u = Uri::parse(s);
1013 EXPECT_EQ(
"[::1]:8080", u.getAuthority());
1021 std::string s(
"http://[2401:db00:20:7004:face:0:29:0]:8080/hello/world?query");
1022 Uri u = Uri::parse(s);
1026 EXPECT_EQ(
"[2401:db00:20:7004:face:0:29:0]", u.getHost());
1027 EXPECT_EQ(
"2401:db00:20:7004:face:0:29:0", u.getHostName());
1029 EXPECT_EQ(
"[2401:db00:20:7004:face:0:29:0]:8080", u.getAuthority());
1037 std::string s(
"http://[2401:db00:20:7004:face:0:29:0]/hello/world?query");
1038 Uri u = Uri::parse(s);
1042 EXPECT_EQ(
"[2401:db00:20:7004:face:0:29:0]", u.getHost());
1043 EXPECT_EQ(
"2401:db00:20:7004:face:0:29:0", u.getHostName());
1045 EXPECT_EQ(
"[2401:db00:20:7004:face:0:29:0]", u.getAuthority());
1053 std::string s(
"http://user:pass@host.com/");
1054 Uri u = Uri::parse(s);
1060 EXPECT_EQ(
"user:pass@host.com", u.getAuthority());
1068 std::string s(
"http://user@host.com/");
1069 Uri u = Uri::parse(s);
1075 EXPECT_EQ(
"user@host.com", u.getAuthority());
1083 std::string s(
"http://user:@host.com/");
1084 Uri u = Uri::parse(s);
1090 EXPECT_EQ(
"user@host.com", u.getAuthority());
1094 EXPECT_EQ(
"http://user@host.com/", u.toString());
1098 std::string s(
"http://:pass@host.com/");
1099 Uri u = Uri::parse(s);
1105 EXPECT_EQ(
":pass@host.com", u.getAuthority());
1113 std::string s(
"http://@host.com/");
1114 Uri u = Uri::parse(s);
1120 EXPECT_EQ(
"host.com", u.getAuthority());
1124 EXPECT_EQ(
"http://host.com/", u.toString());
1128 std::string s(
"http://:@host.com/");
1129 Uri u = Uri::parse(s);
1135 EXPECT_EQ(
"host.com", u.getAuthority());
1139 EXPECT_EQ(
"http://host.com/", u.toString());
1143 std::string s(
"file:///etc/motd");
1144 Uri u = Uri::parse(s);
1158 std::string s(
"file://etc/motd");
1159 Uri u = Uri::parse(s);
1174 std::string s(
"http://localhost?&key1=foo&key2=&key3&=bar&=bar=&");
1175 Uri u = Uri::parse(s);
1176 auto paramsList = u.getQueryParams();
1177 std::map<std::string, std::string> params;
1178 for (
auto& param : paramsList) {
1179 params[param.first] = param.second;
1183 EXPECT_NE(params.end(), params.find(
"key2"));
1185 EXPECT_NE(params.end(), params.find(
"key3"));
1191 std::string s(
"http://localhost?&&&&&&&&&&&&&&&");
1192 Uri u = Uri::parse(s);
1193 auto params = u.getQueryParams();
1199 std::string s(
"http://localhost?&=invalid_key&key2&key3=foo");
1200 Uri u = Uri::parse(s);
1201 auto paramsList = u.getQueryParams();
1202 std::map<std::string, std::string> params;
1203 for (
auto& param : paramsList) {
1204 params[param.first] = param.second;
1207 EXPECT_NE(params.end(), params.find(
"key2"));
1214 std::string s(
"http://localhost?&key1=====&&=key2&key3=");
1215 Uri u = Uri::parse(s);
1216 auto paramsList = u.getQueryParams();
1217 std::map<std::string, std::string> params;
1218 for (
auto& param : paramsList) {
1219 params[param.first] = param.second;
1222 EXPECT_NE(params.end(), params.find(
"key3"));
1228 std::string s(
"ws://localhost:90?key1=foo=bar&key2=foobar&");
1229 Uri u = Uri::parse(s);
1230 auto paramsList = u.getQueryParams();
1231 std::map<std::string, std::string> params;
1232 for (
auto& param : paramsList) {
1233 params[param.first] = param.second;
1245 EXPECT_EQ(
"localhost", v.getHostName());
1249 EXPECT_EQ(
"key1=foo=bar&key2=foobar&", v.getQuery());
1260 EXPECT_EQ(
"localhost", v.getHostName());
1264 EXPECT_EQ(
"key1=foo=bar&key2=foobar&", v.getQuery());
1282 Uri v = std::move(u);
1287 EXPECT_EQ(
"localhost", v.getHostName());
1291 EXPECT_EQ(
"key1=foo=bar&key2=foobar&", v.getQuery());
1303 EXPECT_EQ(
"localhost", v.getHostName());
1307 EXPECT_EQ(
"key1=foo=bar&key2=foobar&", v.getQuery());
1313 std::string s(
"2http://www.facebook.com");
1315 Uri u = Uri::parse(s);
1320 std::string s(
"www[facebook]com");
1322 Uri u = Uri::parse(
"http://" + s);
1327 std::string s(
"http://[::1:8080/hello/world?query#fragment");
1328 Uri u = Uri::parse(s);
1333 std::string s(
"http://::1]:8080/hello/world?query#fragment");
1335 Uri u = Uri::parse(s);
1340 std::string s(
"http://::1:8080/hello/world?query#fragment");
1341 Uri u = Uri::parse(s);
1346 std::string s(
"http://2401:db00:20:7004:face:0:29:0/hello/world?query");
1347 Uri u = Uri::parse(s);
1352 Uri http = Uri::parse(
"http://google.com");
1353 Uri https = Uri::parse(
"https://www.google.com:90");
1354 Uri query = Uri::parse(
"http://google.com:8080/foo/bar?foo=bar");
1355 Uri localhost = Uri::parse(
"http://localhost:8080");
1356 Uri ipv6 = Uri::parse(
"https://[2001:0db8:85a3:0042:1000:8a2e:0370:7334]");
1357 Uri ipv6short = Uri::parse(
"http://[2001:db8:85a3:42:1000:8a2e:370:7334]");
1358 Uri ipv6port = Uri::parse(
"http://[2001:db8:85a3:42:1000:8a2e:370:7334]:90");
1359 Uri ipv6abbrev = Uri::parse(
"http://[2001::7334:a:90]");
1360 Uri ipv6http = Uri::parse(
"http://[2001::7334:a]:90");
1361 Uri ipv6query = Uri::parse(
"http://[2001::7334:a]:90/foo/bar?foo=bar");
1365 EXPECT_EQ(http.getHost(),
"google.com");
1368 EXPECT_EQ(https.getHost(),
"www.google.com");
1370 EXPECT_EQ(query.getPathEtc(),
"/foo/bar?foo=bar");
1371 EXPECT_EQ(localhost.getScheme(),
"http");
1372 EXPECT_EQ(localhost.getHost(),
"localhost");
1375 EXPECT_EQ(ipv6.getHostName(),
"2001:0db8:85a3:0042:1000:8a2e:0370:7334");
1377 EXPECT_EQ(ipv6short.getScheme(),
"http");
1378 EXPECT_EQ(ipv6short.getHostName(),
"2001:db8:85a3:42:1000:8a2e:370:7334");
1380 EXPECT_EQ(ipv6port.getScheme(),
"http");
1381 EXPECT_EQ(ipv6port.getHostName(),
"2001:db8:85a3:42:1000:8a2e:370:7334");
1383 EXPECT_EQ(ipv6abbrev.getScheme(),
"http");
1384 EXPECT_EQ(ipv6abbrev.getHostName(),
"2001::7334:a:90");
1386 EXPECT_EQ(ipv6http.getScheme(),
"http");
1388 EXPECT_EQ(ipv6http.getHostName(),
"2001::7334:a");
1389 EXPECT_EQ(ipv6query.getScheme(),
"http");
1391 EXPECT_EQ(ipv6query.getHostName(),
"2001::7334:a");
1392 EXPECT_EQ(ipv6query.getPathEtc(),
"/foo/bar?foo=bar");
1396 Uri u0 = Uri::parse(
"http://localhost:84/foo.html?&q=123");
1397 Uri u1 = Uri::parse(
"https://localhost:82/foo.html?&q=1");
1398 Uri u2 = Uri::parse(
"ws://localhost/foo");
1399 Uri u3 = Uri::parse(
"localhost/foo");
1400 Uri u4 = Uri::parse(
"localhost:8080");
1401 Uri u5 = Uri::parse(
"bb://localhost?&foo=12:4&ccc=13");
1402 Uri u6 = Uri::parse(
"cc://localhost:91?&foo=321&bbb=1");
1408 EXPECT_EQ(u0.getPathEtc(),
"/foo.html?&q=123");
1413 EXPECT_EQ(u1.getPathEtc(),
"/foo.html?&q=1");
1435 EXPECT_EQ(u5.getPathEtc(),
"?&foo=12:4&ccc=13");
1436 EXPECT_EQ(u5.getQuery(),
"&foo=12:4&ccc=13");
1442 EXPECT_EQ(u6.getPathEtc(),
"?&foo=321&bbb=1");
1443 EXPECT_EQ(u6.getQuery(),
"&foo=321&bbb=1");
virtual void onEnter() override