loolwsd/test/httpwstest.cpp | 72 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+)
New commits: commit 198b41676f705023fa545ccba8c0cbb8035480e5 Author: Pranav Kant <pran...@collabora.co.uk> Date: Wed Oct 5 18:48:53 2016 +0530 loolwsd: new viewinfo message test Change-Id: Icf9c74006bf6ee15864a266fef5aa49003ca1a70 diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp index d963e11..477012a 100644 --- a/loolwsd/test/httpwstest.cpp +++ b/loolwsd/test/httpwstest.cpp @@ -97,6 +97,7 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testGraphicInvalidate); CPPUNIT_TEST(testCursorPosition); CPPUNIT_TEST(testAlertAllUsers); + CPPUNIT_TEST(testViewInfoMsg); CPPUNIT_TEST_SUITE_END(); @@ -140,6 +141,7 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture void testGraphicInvalidate(); void testCursorPosition(); void testAlertAllUsers(); + void testViewInfoMsg(); void loadDoc(const std::string& documentURL); @@ -2243,6 +2245,76 @@ void HTTPWSTest::testAlertAllUsers() } } +void HTTPWSTest::testViewInfoMsg() +{ + // Load 2 documents, cross-check the viewid received by each of them in their status message + // with the one sent in viewinfo message to itself as well as to other one + + const std::string testname = "testViewInfoMsg:"; + std::string docPath; + std::string docURL; + getDocumentPathAndURL("hello.odt", docPath, docURL); + + Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, docURL); + Poco::Net::WebSocket socket0 = *connectLOKit(_uri, request, _response); + Poco::Net::WebSocket socket1 = *connectLOKit(_uri, request, _response); + + std::string response; + int part, parts, width, height; + int viewid[2]; + + try + { + // Load first view and remember the viewid + sendTextFrame(socket0, "load url=" + docURL); + getResponseMessage(socket0, "status:", response, false, testname + "socket[0] "); + parseDocSize(response, "text", part, parts, width, height, viewid[0]); + + // Check if viewinfo message also mentions the same viewid + getResponseMessage(socket0, "viewinfo: ", response, false, testname + "socket[0] "); + Poco::JSON::Parser parser0; + Poco::JSON::Array::Ptr array = parser0.parse(response).extract<Poco::JSON::Array::Ptr>(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), array->size()); + + Poco::JSON::Object::Ptr viewInfoObj0 = array->getObject(0); + int viewid0 = viewInfoObj0->get("id").convert<int>(); + CPPUNIT_ASSERT_EQUAL(viewid[0], viewid0); + + // Load second view and remember the viewid + sendTextFrame(socket1, "load url=" + docURL); + getResponseMessage(socket1, "status:", response, false, testname + "socket[1] "); + parseDocSize(response, "text", part, parts, width, height, viewid[1]); + + // Check if viewinfo message in this view mentions + // viewid of both first loaded view and this view + getResponseMessage(socket1, "viewinfo: ", response, false, testname + "socket[1] "); + Poco::JSON::Parser parser1; + array = parser1.parse(response).extract<Poco::JSON::Array::Ptr>(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), array->size()); + + viewInfoObj0 = array->getObject(0); + Poco::JSON::Object::Ptr viewInfoObj1 = array->getObject(1); + viewid0 = viewInfoObj0->get("id").convert<int>(); + int viewid1 = viewInfoObj1->get("id").convert<int>(); + + if (viewid[0] == viewid0) + CPPUNIT_ASSERT_EQUAL(viewid[1], viewid1); + else if (viewid[0] == viewid1) + CPPUNIT_ASSERT_EQUAL(viewid[1], viewid0); + else + CPPUNIT_FAIL("Inconsistent viewid in viewinfo and status messages"); + + // Check if first view also got the same viewinfo message + std::string response1; + getResponseMessage(socket0, "viewinfo: ", response1, false, testname + "socket[0] "); + CPPUNIT_ASSERT_EQUAL(response, response1); + } + catch(const Poco::Exception& exc) + { + CPPUNIT_FAIL(exc.displayText()); + } +} + CPPUNIT_TEST_SUITE_REGISTRATION(HTTPWSTest); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits