/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * 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/. */ #ifndef INCLUDED_UNITHTTP_HPP #define INCLUDED_UNITHTTP_HPP #include #include #include #include #include #include #include #include #include #include #include "Common.hpp" using Poco::Net::SocketAddress; using Poco::Net::HTTPServerParams; /// Unit test stub for a server response class UnitHTTPServerResponse : public Poco::Net::HTTPServerResponse { bool _sent; std::stringstream _dummyStream; public: UnitHTTPServerResponse() : _sent(false) { } virtual void sendContinue() override {} virtual std::ostream& send() override { _sent = true; return _dummyStream; } virtual void sendFile(const std::string& /* path */, const std::string& /* mediaType */) override {} virtual void sendBuffer(const void* /* pBuffer */, std::size_t /* length */) override {} virtual void redirect(const std::string& /* uri */, HTTPStatus /* status = HTTP_FOUND */) override {} virtual void requireAuthentication(const std::string& /* realm */) override {} virtual bool sent() const override { return _sent; } }; /// Unit test stub for server params with a public dtor class UnitHTTPServerParams : public Poco::Net::HTTPServerParams { public: ~UnitHTTPServerParams() {} }; /// Unit test stub for a server request class UnitHTTPServerRequest : public Poco::Net::HTTPServerRequest { protected: UnitHTTPServerResponse& _response; Poco::Net::SocketAddress _clientAddress; Poco::Net::SocketAddress _serverAddress; std::stringstream _dummyStream; UnitHTTPServerParams _dummyParams; public: UnitHTTPServerRequest(UnitHTTPServerResponse& inResponse, const std::string& uri) : _response(inResponse), _clientAddress(), _serverAddress(MasterPortNumber) { setURI(uri); } virtual std::istream& stream() override { return _dummyStream; } #if POCO_VERSION < 0x02000000 virtual bool expectContinue() const override { return false; } #endif #if POCO_VERSION >= 0x02000000 virtual bool secure() const override { return true; } #endif virtual const SocketAddress& clientAddress() const override { return _clientAddress; } virtual const SocketAddress& serverAddress() const override { return _serverAddress; } virtual const HTTPServerParams& serverParams() const override { return _dummyParams; } virtual Poco::Net::HTTPServerResponse& response() const override { return _response; } }; namespace UnitHTTP { Poco::Net::HTTPClientSession* createSession(); } class UnitWebSocket { Poco::Net::HTTPClientSession* _session; Poco::Net::WebSocket* _socket; public: /// Get a websocket connected for a given URL UnitWebSocket(const std::string& docURL); ~UnitWebSocket() { delete _socket; delete _session; } }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */