summaryrefslogtreecommitdiffstats
path: root/test/UnitWOPI.cpp
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2017-09-27 14:13:43 +0200
committerJan Holesovsky <kendy@collabora.com>2017-09-27 16:37:16 +0200
commit3141cfc99ba2e2fb3878e95373a2fa48a76205a5 (patch)
tree1216c16e3f4163fcc55f56eb89cfd90e94aa5fc7 /test/UnitWOPI.cpp
parentSeparate the fake wopi server to an own class. (diff)
downloadonline-3141cfc99ba2e2fb3878e95373a2fa48a76205a5.tar.gz
online-3141cfc99ba2e2fb3878e95373a2fa48a76205a5.zip
PutFile ext: X-LOOL-WOPI-IsModifiedByUser unit test.
Change-Id: I0b1ffc74dbbc771f0dcb68f87d46af3ba469ae9e Reviewed-on: https://gerrit.libreoffice.org/42855 Reviewed-by: pranavk <pranavk@collabora.co.uk> Tested-by: pranavk <pranavk@collabora.co.uk>
Diffstat (limited to 'test/UnitWOPI.cpp')
-rw-r--r--test/UnitWOPI.cpp129
1 files changed, 129 insertions, 0 deletions
diff --git a/test/UnitWOPI.cpp b/test/UnitWOPI.cpp
new file mode 100644
index 0000000000..fade8d0f6e
--- /dev/null
+++ b/test/UnitWOPI.cpp
@@ -0,0 +1,129 @@
+/* -*- 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 "config.h"
+
+#include "WopiTestServer.hpp"
+#include "Log.hpp"
+#include "Unit.hpp"
+#include "UnitHTTP.hpp"
+#include "helpers.hpp"
+#include <Poco/Net/HTTPRequest.h>
+#include <Poco/Util/LayeredConfiguration.h>
+
+class UnitWOPI : public WopiTestServer
+{
+ enum class Phase
+ {
+ LoadAndSave,
+ Modify,
+ SaveModified,
+ Finish
+ } _phase;
+
+ enum class SavingPhase
+ {
+ Unmodified,
+ Modified
+ } _savingPhase;
+
+ bool _finishedSaveUnmodified;
+ bool _finishedSaveModified;
+
+ std::unique_ptr<UnitWebSocket> _ws;
+
+public:
+ UnitWOPI() :
+ _phase(Phase::LoadAndSave),
+ _finishedSaveUnmodified(false),
+ _finishedSaveModified(false)
+ {
+ }
+
+ void assertCheckFileInfoRequest(const Poco::Net::HTTPRequest& /*request*/) override
+ {
+ // nothing to assert in CheckFileInfo
+ }
+
+ void assertGetFileRequest(const Poco::Net::HTTPRequest& /*request*/) override
+ {
+ // nothing to assert in GetFile
+ }
+
+ void assertPutFileRequest(const Poco::Net::HTTPRequest& request) override
+ {
+ if (_savingPhase == SavingPhase::Unmodified)
+ {
+ CPPUNIT_ASSERT_EQUAL(std::string("false"), request.get("X-LOOL-WOPI-IsModifiedByUser"));
+ _finishedSaveUnmodified = true;
+ }
+ else if (_savingPhase == SavingPhase::Modified)
+ {
+ CPPUNIT_ASSERT_EQUAL(std::string("true"), request.get("X-LOOL-WOPI-IsModifiedByUser"));
+ _finishedSaveModified = true;
+ }
+ }
+
+ void invokeTest() override
+ {
+ constexpr char testName[] = "UnitWOPI";
+
+ switch (_phase)
+ {
+ case Phase::LoadAndSave:
+ {
+ Poco::URI wopiURL(helpers::getTestServerURI() + "/wopi/files/0?access_token=anything");
+ std::string wopiSrc;
+ Poco::URI::encode(wopiURL.toString(), ":/?", wopiSrc);
+ Poco::URI loolUri(helpers::getTestServerURI());
+
+ LOG_INF("Connecting to the fake WOPI server: /lool/" << wopiSrc << "/ws");
+
+ _ws.reset(new UnitWebSocket("/lool/" + wopiSrc + "/ws"));
+ assert(_ws.get());
+
+ helpers::sendTextFrame(*_ws->getLOOLWebSocket(), "load url=" + wopiSrc, testName);
+ helpers::sendTextFrame(*_ws->getLOOLWebSocket(), "save dontTerminateEdit=1 dontSaveIfUnmodified=0", testName);
+
+ _phase = Phase::Modify;
+ _savingPhase = SavingPhase::Unmodified;
+ break;
+ }
+ case Phase::Modify:
+ {
+ helpers::sendTextFrame(*_ws->getLOOLWebSocket(), "key type=input char=97 key=0", testName);
+ helpers::sendTextFrame(*_ws->getLOOLWebSocket(), "key type=up char=0 key=512", testName);
+
+ _phase = Phase::SaveModified;
+ break;
+ }
+ case Phase::SaveModified:
+ {
+ helpers::sendTextFrame(*_ws->getLOOLWebSocket(), "save dontTerminateEdit=0 dontSaveIfUnmodified=0", testName);
+
+ _phase = Phase::Finish;
+ _savingPhase = SavingPhase::Modified;
+ break;
+ }
+ case Phase::Finish:
+ {
+ CPPUNIT_ASSERT(_finishedSaveUnmodified && _finishedSaveModified);
+ exitTest(TestResult::Ok);
+ break;
+ }
+ }
+ }
+};
+
+UnitBase *unit_create_wsd(void)
+{
+ return new UnitWOPI();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */