AusweisApp2/test/helper/MockHttpServer.cpp

55 lines
1.1 KiB
C++
Raw Normal View History

2017-07-03 09:33:28 +02:00
/*!
2018-03-28 15:10:51 +02:00
* \copyright Copyright (c) 2016-2018 Governikus GmbH & Co. KG, Germany
2017-07-03 09:33:28 +02:00
*/
#include "MockHttpServer.h"
2017-12-20 14:54:05 +01:00
#include "Env.h"
2017-07-03 09:33:28 +02:00
using namespace governikus;
MockHttpServer::MockHttpServer()
: QObject()
, mServer()
{
HttpServer::cPort = 0;
2017-12-20 14:54:05 +01:00
mServer = Env::getShared<HttpServer>();
2017-07-03 09:33:28 +02:00
QVERIFY(mServer);
QVERIFY(mServer->isListening());
connect(mServer.data(), &HttpServer::fireNewHttpRequest, this, &MockHttpServer::onNewHttpRequest);
}
void MockHttpServer::reset()
{
mMock.clear();
}
void MockHttpServer::addMock(const QByteArray& pUrl, const HttpResponse& pResponse)
{
mMock.insert(pUrl, pResponse);
}
QUrl MockHttpServer::getAddress(const QString& pPath) const
{
const auto& port = QString::number(mServer->getServerPort());
return QUrl(QStringLiteral("http://localhost:") + port + pPath);
}
void MockHttpServer::onNewHttpRequest(const QSharedPointer<HttpRequest>& pRequest)
{
QVERIFY(pRequest);
const auto& response = mMock.value(pRequest->getUrl().toEncoded());
if (response.isValid())
{
pRequest->send(response);
}
else
{
pRequest->send(HttpStatusCode::INTERNAL_SERVER_ERROR);
}
}