From 87f6f3df8b28d14ff383f2da448b1b2ce1248464 Mon Sep 17 00:00:00 2001 From: Seva <seva@binarytrails.net> Date: Fri, 13 Sep 2019 13:32:08 -0400 Subject: [PATCH] http: fix & test url with https but empty service --- src/http.cpp | 4 +++- tests/httptester.cpp | 14 ++++++++++++++ tests/httptester.h | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/http.cpp b/src/http.cpp index ec5f6426..05114333 100644 --- a/src/http.cpp +++ b/src/http.cpp @@ -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("/"); diff --git a/tests/httptester.cpp b/tests/httptester.cpp index 7021cdc8..0a6a8615 100644 --- a/tests/httptester.cpp +++ b/tests/httptester.cpp @@ -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 diff --git a/tests/httptester.h b/tests/httptester.h index 14cab387..83df193f 100644 --- a/tests/httptester.h +++ b/tests/httptester.h @@ -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(); -- GitLab