http: fix & test url with https but empty service

This commit is contained in:
Seva committed 2019-09-13 13:50:45 -04:00
1 parent 7270c353df
commit 87f6f3df8b
3 files changed
+19 -1

No files matched your search

+3 -1
View File
@@ -43,8 +43,10 @@ Url::Url(const std::string& url): url(url)
const size_t proto_end = url.find("://");
if (proto_end != std::string::npos){
addr_begin = proto_end + 3;
if (url.substr(0, proto_end) == "https")
if (url.substr(0, proto_end) == "https"){
protocol = "https";
service = protocol;
}
}
// host and service
size_t addr_size = url.substr(addr_begin).find("/");
+14
View File
@@ -53,6 +53,20 @@ HttpTester::test_parse_url() {
CPPUNIT_ASSERT(parsed.target == "/");
}
void
HttpTester::test_parse_https_url_no_service() {
// Arrange
std::string url = "https://jami.net/";
// Act
dht::http::Url parsed (url);
// Assert
CPPUNIT_ASSERT(parsed.url == url);
CPPUNIT_ASSERT(parsed.protocol == "https");
CPPUNIT_ASSERT(parsed.host == "jami.net");
CPPUNIT_ASSERT(parsed.service == "https");
CPPUNIT_ASSERT(parsed.target == "/");
}
void
HttpTester::test_parse_url_no_prefix_no_target() {
// Arrange
+2
View File
@@ -31,6 +31,7 @@ namespace test {
class HttpTester : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(HttpTester);
CPPUNIT_TEST(test_parse_url);
CPPUNIT_TEST(test_parse_https_url_no_service);
CPPUNIT_TEST(test_parse_url_no_prefix_no_target);
CPPUNIT_TEST(test_parse_url_target);
CPPUNIT_TEST(test_parse_url_query);
@@ -57,6 +58,7 @@ class HttpTester : public CppUnit::TestFixture {
* Test parse urls
*/
void test_parse_url();
void test_parse_https_url_no_service();
void test_parse_url_no_prefix_no_target();
void test_parse_url_target();
void test_parse_url_query();