loolwsd/test/httpgettest.cpp | 54 +++++++++++++++++++++++++++++++++++++++ loolwsd/test/httpposttest.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+)
New commits: commit 7317345a2badb363a2490ab1b32dcb776cb6dca3 Author: Henry Castro <hcas...@collabora.com> Date: Mon Apr 25 21:01:46 2016 -0400 loolwsd: test: add testScripts diff --git a/loolwsd/test/httpgettest.cpp b/loolwsd/test/httpgettest.cpp index 2dd1df9..a1eecdc 100644 --- a/loolwsd/test/httpgettest.cpp +++ b/loolwsd/test/httpgettest.cpp @@ -34,12 +34,14 @@ class HTTPGetTest : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testDiscovery); CPPUNIT_TEST(testLOleaflet); CPPUNIT_TEST(testParams); + CPPUNIT_TEST(testScripts); CPPUNIT_TEST_SUITE_END(); void testDiscovery(); void testLOleaflet(); void testParams(); + void testScripts(); #if ENABLE_SSL public: @@ -124,6 +126,58 @@ void HTTPGetTest::testParams() CPPUNIT_ASSERT(html.find(std::string(LOOLWSD_VERSION)) != std::string::npos); } +void HTTPGetTest::testScripts() +{ +#if ENABLE_SSL + Poco::URI uri("https://127.0.0.1:" + std::to_string(DEFAULT_CLIENT_PORT_NUMBER)); + Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort()); +#else + Poco::URI uri("http://127.0.0.1:" + std::to_string(DEFAULT_CLIENT_PORT_NUMBER)); + Poco::Net::HTTPClientSession session(uri.getHost(), uri.getPort()); +#endif + Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, "/loleaflet/dist/loleaflet.html"); + session.sendRequest(request); + + Poco::Net::HTTPResponse response; + std::istream& rs = session.receiveResponse(response); + CPPUNIT_ASSERT_EQUAL(Poco::Net::HTTPResponse::HTTP_OK, response.getStatus()); + + std::string html; + Poco::StreamCopier::copyToString(rs, html); + + Poco::RegularExpression script("<script.*?src=\"(.*?)\""); + Poco::RegularExpression::MatchVec matches; + int offset = 0; + + while (script.match(html, offset, matches) > 0) + { + CPPUNIT_ASSERT_EQUAL(2, (int)matches.size()); + Poco::URI uriScript(html.substr(matches[1].offset, matches[1].length)); + if (uriScript.getHost().empty()) + { +#if ENABLE_SSL + Poco::Net::HTTPSClientSession sessionScript(uri.getHost(), uri.getPort()); +#else + Poco::Net::HTTPClientSession sessionScript(uri.getHost(), uri.getPort()); +#endif + std::cout << "checking... " << uriScript.toString(); + Poco::Net::HTTPRequest requestScript(Poco::Net::HTTPRequest::HTTP_GET, uriScript.toString()); + sessionScript.sendRequest(requestScript); + + Poco::Net::HTTPResponse responseScript; + sessionScript.receiveResponse(responseScript); + CPPUNIT_ASSERT_EQUAL(Poco::Net::HTTPResponse::HTTP_OK, responseScript.getStatus()); + CPPUNIT_ASSERT_EQUAL(std::string("application/javascript"), responseScript.getContentType()); + std::cout << " OK" << std::endl; + } + else + { + std::cout << "skip " << uriScript.toString() << std::endl; + } + offset = static_cast<int>(matches[0].offset + matches[0].length); + } +} + CPPUNIT_TEST_SUITE_REGISTRATION(HTTPGetTest); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/loolwsd/test/httpposttest.cpp b/loolwsd/test/httpposttest.cpp index 2f764ce..8c7f637 100644 --- a/loolwsd/test/httpposttest.cpp +++ b/loolwsd/test/httpposttest.cpp @@ -40,6 +40,7 @@ class HTTPPostTest : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testLOleaflet); CPPUNIT_TEST(testParams); + CPPUNIT_TEST(testScripts); CPPUNIT_TEST(testConvertTo); // This should be the last test: @@ -50,6 +51,7 @@ class HTTPPostTest : public CPPUNIT_NS::TestFixture void testCountHowManyLoolkits(); void testLOleaflet(); void testParams(); + void testScripts(); void testConvertTo(); void testNoExtraLoolKitsLeft(); @@ -130,6 +132,61 @@ void HTTPPostTest::testParams() CPPUNIT_ASSERT(html.find(std::string(LOOLWSD_VERSION)) != std::string::npos); } +void HTTPPostTest::testScripts() +{ +#if ENABLE_SSL + Poco::URI uri("https://127.0.0.1:" + std::to_string(DEFAULT_CLIENT_PORT_NUMBER)); + Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort()); +#else + Poco::URI uri("http://127.0.0.1:" + std::to_string(DEFAULT_CLIENT_PORT_NUMBER)); + Poco::Net::HTTPClientSession session(uri.getHost(), uri.getPort()); +#endif + + Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_POST, "/loleaflet/dist/loleaflet.html"); + std::string body; + request.setContentLength((int) body.length()); + session.sendRequest(request) << body; + + Poco::Net::HTTPResponse response; + std::istream& rs = session.receiveResponse(response); + CPPUNIT_ASSERT_EQUAL(Poco::Net::HTTPResponse::HTTP_OK, response.getStatus()); + + std::string html; + Poco::StreamCopier::copyToString(rs, html); + + Poco::RegularExpression script("<script.*?src=\"(.*?)\""); + Poco::RegularExpression::MatchVec matches; + int offset = 0; + + while (script.match(html, offset, matches) > 0) + { + CPPUNIT_ASSERT_EQUAL(2, (int)matches.size()); + Poco::URI uriScript(html.substr(matches[1].offset, matches[1].length)); + if (uriScript.getHost().empty()) + { +#if ENABLE_SSL + Poco::Net::HTTPSClientSession sessionScript(uri.getHost(), uri.getPort()); +#else + Poco::Net::HTTPClientSession sessionScript(uri.getHost(), uri.getPort()); +#endif + std::cout << "checking... " << uriScript.toString(); + Poco::Net::HTTPRequest requestScript(Poco::Net::HTTPRequest::HTTP_GET, uriScript.toString()); + sessionScript.sendRequest(requestScript); + + Poco::Net::HTTPResponse responseScript; + sessionScript.receiveResponse(responseScript); + CPPUNIT_ASSERT_EQUAL(Poco::Net::HTTPResponse::HTTP_OK, responseScript.getStatus()); + CPPUNIT_ASSERT_EQUAL(std::string("application/javascript"), responseScript.getContentType()); + std::cout << " OK" << std::endl; + } + else + { + std::cout << "skip " << uriScript.toString() << std::endl; + } + offset = static_cast<int>(matches[0].offset + matches[0].length); + } +} + void HTTPPostTest::testConvertTo() { const auto srcPath = Util::getTempFilePath(TDOC, "hello.odt"); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits