loolwsd/.gitignore | 1 loolwsd/Makefile.am | 2 + loolwsd/configure.ac | 10 +++++++ loolwsd/test/.gitignore | 9 ++++++ loolwsd/test/Makefile.am | 13 +++++++++ loolwsd/test/data/hello.odt |binary loolwsd/test/data/hello.txt | 1 loolwsd/test/httpposttest.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++ loolwsd/test/test.cpp | 36 +++++++++++++++++++++++++ 9 files changed, 131 insertions(+)
New commits: commit 3ed78cce6fa1292e4bb5cfbe872f3dd2e6cffc0e Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Wed Oct 21 13:44:35 2015 +0200 loolwsd: add HTTP POST convert-to testcase Fails with 8f90c38844ba6840acd97c6a72eb104d1171dc8d (loolwsd convert-to: implement actual conversion, 2015-10-20) reverted. diff --git a/loolwsd/test/httpposttest.cpp b/loolwsd/test/httpposttest.cpp index 13230ee..9a4a7d5 100644 --- a/loolwsd/test/httpposttest.cpp +++ b/loolwsd/test/httpposttest.cpp @@ -7,8 +7,18 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include <Poco/Net/FilePartSource.h> +#include <Poco/Net/HTMLForm.h> +#include <Poco/Net/HTTPClientSession.h> +#include <Poco/Net/HTTPRequest.h> +#include <Poco/Net/HTTPResponse.h> +#include <Poco/StreamCopier.h> +#include <Poco/URI.h> #include <cppunit/extensions/HelperMacros.h> +#include <LOOLWSD.hpp> + +/// Tests the HTTP POST API of loolwsd. The server has to be started manually before running this test. class HTTPPostTest : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(HTTPPostTest); @@ -20,6 +30,28 @@ class HTTPPostTest : public CPPUNIT_NS::TestFixture void HTTPPostTest::testConvertTo() { + Poco::URI uri("http://127.0.0.1:" + std::to_string(LOOLWSD::DEFAULT_CLIENT_PORT_NUMBER) + "/convert-to"); + Poco::Net::HTTPClientSession session(uri.getHost(), uri.getPort()); + + Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_POST, "/convert-to"); + Poco::Net::HTMLForm form; + form.setEncoding(Poco::Net::HTMLForm::ENCODING_MULTIPART); + form.set("format", "txt"); + form.addPart("data", new Poco::Net::FilePartSource(TDOC "/hello.odt")); + form.prepareSubmit(request); + // If this results in a Poco::Net::ConnectionRefusedException, loolwsd is not running. + form.write(session.sendRequest(request)); + + Poco::Net::HTTPResponse response; + std::stringstream actualStream; + // receiveResponse() resulted in a Poco::Net::NoMessageException. + std::istream& responseStream = session.receiveResponse(response); + Poco::StreamCopier::copyStream(responseStream, actualStream); + + std::ifstream fileStream(TDOC "/hello.txt"); + std::stringstream expectedStream; + expectedStream << fileStream.rdbuf(); + CPPUNIT_ASSERT_EQUAL(expectedStream.str(), actualStream.str()); } CPPUNIT_TEST_SUITE_REGISTRATION(HTTPPostTest); commit 443486117af44dfe314ff1d0af75af5fec0d759f Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Wed Oct 21 12:01:47 2015 +0200 loolwsd: cppunit skeleton diff --git a/loolwsd/.gitignore b/loolwsd/.gitignore index 101239d..fd499f2 100644 --- a/loolwsd/.gitignore +++ b/loolwsd/.gitignore @@ -17,6 +17,7 @@ /install-sh /missing /stamp-h1 +/test-driver *.o *.exe diff --git a/loolwsd/Makefile.am b/loolwsd/Makefile.am index e0e3fb9..c86f449 100644 --- a/loolwsd/Makefile.am +++ b/loolwsd/Makefile.am @@ -1,3 +1,5 @@ +SUBDIRS = test + bin_PROGRAMS = loolwsd dist_bin_SCRIPTS = loolwsd-systemplate-setup diff --git a/loolwsd/configure.ac b/loolwsd/configure.ac index f3acfb0..5e219d5 100644 --- a/loolwsd/configure.ac +++ b/loolwsd/configure.ac @@ -46,6 +46,10 @@ AC_ARG_WITH([libpng-libs], AS_HELP_STRING([--with-libpng-libs=<path>], [Path the "lib" directory with the libpng libraries])) +AC_ARG_ENABLE([tests], + AS_HELP_STRING([--disable-tests], + [Build and run unit tests])) + # Handle options AS_IF([test "$enable_debug" = yes -a -n "$with_poco_libs"], [POCO_DEBUG_SUFFIX=d], @@ -95,6 +99,9 @@ AS_IF([test `uname -s` = Linux], [], [AC_MSG_ERROR([libcap not available?])])]) +AS_IF([test "$enable_tests" != "no"], + [PKG_CHECK_MODULES([CPPUNIT], [cppunit])]) + LIBS="$LIBS -lPocoNet${POCO_DEBUG_SUFFIX} -lPocoUtil${POCO_DEBUG_SUFFIX} -lPocoXML${POCO_DEBUG_SUFFIX} -lPocoJSON${POCO_DEBUG_SUFFIX} -lPocoFoundation${POCO_DEBUG_SUFFIX}" AC_CHECK_HEADERS([LibreOfficeKit/LibreOfficeKit.h], @@ -141,7 +148,10 @@ AC_DEFINE_UNQUOTED([LOOLWSD_CACHEDIR],["$LOOLWSD_CACHEDIR"],[Cache folder]) AC_SUBST(LOOLWSD_CACHEDIR) AC_CONFIG_FILES([Makefile + test/Makefile loolwsd.spec]) AC_OUTPUT AC_LANG_POP + +dnl vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/loolwsd/test/.gitignore b/loolwsd/test/.gitignore new file mode 100644 index 0000000..81defda --- /dev/null +++ b/loolwsd/test/.gitignore @@ -0,0 +1,9 @@ +# Autofoo +/.deps +/Makefile +/Makefile.in +*.log +*.trs + +*.o +test diff --git a/loolwsd/test/Makefile.am b/loolwsd/test/Makefile.am new file mode 100644 index 0000000..a161b0f --- /dev/null +++ b/loolwsd/test/Makefile.am @@ -0,0 +1,13 @@ +check_PROGRAMS = test + +AM_CXXFLAGS = $(CPPUNIT_CFLAGS) + +test_CPPFLAGS = -DTDOC=\"$(top_srcdir)/test/data\" + +test_LDADD = $(CPPUNIT_LIBS) + +test_SOURCES = httpposttest.cpp test.cpp + +EXTRA_DIST = data/hello.odt data/hello.txt $(test_SOURCES) + +TESTS = test diff --git a/loolwsd/test/data/hello.odt b/loolwsd/test/data/hello.odt new file mode 100644 index 0000000..8340bfb Binary files /dev/null and b/loolwsd/test/data/hello.odt differ diff --git a/loolwsd/test/data/hello.txt b/loolwsd/test/data/hello.txt new file mode 100644 index 0000000..8f2d6bd --- /dev/null +++ b/loolwsd/test/data/hello.txt @@ -0,0 +1 @@ +Hello world diff --git a/loolwsd/test/httpposttest.cpp b/loolwsd/test/httpposttest.cpp new file mode 100644 index 0000000..13230ee --- /dev/null +++ b/loolwsd/test/httpposttest.cpp @@ -0,0 +1,27 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <cppunit/extensions/HelperMacros.h> + +class HTTPPostTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE(HTTPPostTest); + CPPUNIT_TEST(testConvertTo); + CPPUNIT_TEST_SUITE_END(); + + void testConvertTo(); +}; + +void HTTPPostTest::testConvertTo() +{ +} + +CPPUNIT_TEST_SUITE_REGISTRATION(HTTPPostTest); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/loolwsd/test/test.cpp b/loolwsd/test/test.cpp new file mode 100644 index 0000000..96a071e --- /dev/null +++ b/loolwsd/test/test.cpp @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <iostream> +#include <cppunit/TestRunner.h> +#include <cppunit/TestResult.h> +#include <cppunit/TestResultCollector.h> +#include <cppunit/BriefTestProgressListener.h> +#include <cppunit/extensions/TestFactoryRegistry.h> +#include <cppunit/CompilerOutputter.h> + +int main() +{ + CPPUNIT_NS::TestResult controller; + CPPUNIT_NS::TestResultCollector result; + controller.addListener(&result); + CPPUNIT_NS::BriefTestProgressListener progress; + controller.addListener(&progress); + + CPPUNIT_NS::TestRunner runner; + runner.addTest(CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest()); + runner.run(controller); + + CPPUNIT_NS::CompilerOutputter outputter(&result, std::cerr); + outputter.write(); + + return result.wasSuccessful() ? 0 : 1; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits