diff options
author | Jan Holesovsky <kendy@collabora.com> | 2017-09-27 14:13:43 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2017-09-27 16:37:16 +0200 |
commit | 3141cfc99ba2e2fb3878e95373a2fa48a76205a5 (patch) | |
tree | 1216c16e3f4163fcc55f56eb89cfd90e94aa5fc7 /test/UnitWOPI.cpp | |
parent | Separate the fake wopi server to an own class. (diff) | |
download | online-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.cpp | 129 |
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: */ |