2017-12-20 14:54:05 +01:00
|
|
|
/*!
|
|
|
|
* \brief Unit tests for \ref RemoteServerImpl
|
|
|
|
*
|
2019-05-22 10:08:38 +02:00
|
|
|
* \copyright Copyright (c) 2017-2019 Governikus GmbH & Co. KG, Germany
|
2017-12-20 14:54:05 +01:00
|
|
|
*/
|
2019-01-03 15:06:22 +01:00
|
|
|
#include "RemoteServerImpl.h"
|
2017-12-20 14:54:05 +01:00
|
|
|
|
|
|
|
#include "Env.h"
|
|
|
|
#include "RemoteReaderAdvertiser.h"
|
|
|
|
#include "RemoteServer.h"
|
|
|
|
#include "RemoteWebSocketServer.h"
|
|
|
|
|
|
|
|
#include <QPointer>
|
|
|
|
#include <QSharedPointer>
|
|
|
|
#include <QtTest>
|
|
|
|
|
|
|
|
|
|
|
|
using namespace governikus;
|
|
|
|
|
|
|
|
class RemoteWebSocketServerMock
|
|
|
|
: public RemoteWebSocketServer
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
QString mServerName;
|
|
|
|
bool mPairing;
|
|
|
|
bool mListening = false, mConnected = false;
|
|
|
|
QSharedPointer<ServerMessageHandler> mEmptyHandler;
|
|
|
|
|
|
|
|
bool isListening() const override
|
|
|
|
{
|
|
|
|
return mListening;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool isConnected() const override
|
|
|
|
{
|
|
|
|
return mConnected;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void setConnected(bool pConnected)
|
|
|
|
{
|
|
|
|
if (mConnected != pConnected)
|
|
|
|
{
|
|
|
|
mConnected = pConnected;
|
|
|
|
Q_EMIT fireConnectedChanged(mConnected);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool listen(const QString& pServerName) override
|
|
|
|
{
|
|
|
|
if (mListening)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
mServerName = pServerName;
|
|
|
|
mListening = true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void close() override
|
|
|
|
{
|
|
|
|
mListening = false;
|
|
|
|
mServerName = QString();
|
|
|
|
mPairing = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
QString getServerName() const override
|
|
|
|
{
|
|
|
|
return mServerName;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
quint16 getServerPort() const override
|
|
|
|
{
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void setPairing(bool pEnabled = true) override
|
|
|
|
{
|
|
|
|
mPairing = pEnabled;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
QSslCertificate getCurrentCertificate() const override
|
|
|
|
{
|
|
|
|
return QSslCertificate();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const QSharedPointer<ServerMessageHandler>& getMessageHandler() const override
|
|
|
|
{
|
|
|
|
return mEmptyHandler;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class RemoteReaderAdvertiserMock
|
|
|
|
: public RemoteReaderAdvertiser
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
const QString mIfdName;
|
|
|
|
const QString mIfdId;
|
|
|
|
const quint16 mPort;
|
|
|
|
|
|
|
|
RemoteReaderAdvertiserMock(const QString& pIfdName, const QString& pIfdId, quint16 pPort)
|
|
|
|
: RemoteReaderAdvertiser()
|
|
|
|
, mIfdName(pIfdName)
|
|
|
|
, mIfdId(pIfdId)
|
|
|
|
, mPort(pPort)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
virtual ~RemoteReaderAdvertiserMock();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
RemoteReaderAdvertiserMock::~RemoteReaderAdvertiserMock()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-01-03 15:06:22 +01:00
|
|
|
class test_RemoteServerImpl
|
2017-12-20 14:54:05 +01:00
|
|
|
: public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
QPointer<RemoteReaderAdvertiserMock> mAdvertiserMock;
|
|
|
|
QPointer<RemoteWebSocketServerMock> mWebSocketMock;
|
|
|
|
QScopedPointer<RemoteServer> mServer;
|
|
|
|
|
|
|
|
private Q_SLOTS:
|
|
|
|
void init()
|
|
|
|
{
|
|
|
|
std::function<RemoteReaderAdvertiser*(const QString&, const QString&, quint16&)> creator = [this](const QString& pIfdName, const QString& pIfdId, quint16& pPort){
|
|
|
|
mAdvertiserMock = new RemoteReaderAdvertiserMock(pIfdName, pIfdId, pPort);
|
|
|
|
return mAdvertiserMock;
|
|
|
|
};
|
|
|
|
Env::setCreator<RemoteReaderAdvertiser*, const QString&, const QString&, quint16&>(creator);
|
|
|
|
std::function<RemoteWebSocketServer*()> creator2 = [this](){
|
|
|
|
mWebSocketMock = new RemoteWebSocketServerMock;
|
|
|
|
return mWebSocketMock;
|
|
|
|
};
|
|
|
|
Env::setCreator<RemoteWebSocketServer*>(creator2);
|
|
|
|
mServer.reset(new RemoteServerImpl());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void startStop()
|
|
|
|
{
|
|
|
|
QVERIFY(!mAdvertiserMock);
|
|
|
|
QVERIFY(!mWebSocketMock->isListening());
|
|
|
|
|
|
|
|
QVERIFY(mServer->start(QStringLiteral("ServerName")));
|
|
|
|
QVERIFY(mAdvertiserMock);
|
|
|
|
QVERIFY(mWebSocketMock->isListening());
|
|
|
|
|
|
|
|
mServer->stop();
|
|
|
|
QVERIFY(!mAdvertiserMock);
|
|
|
|
QVERIFY(!mWebSocketMock->isListening());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void serverName()
|
|
|
|
{
|
|
|
|
mServer->start(QStringLiteral("ServerName"));
|
|
|
|
QCOMPARE(mAdvertiserMock->mIfdName, QStringLiteral("ServerName"));
|
|
|
|
QCOMPARE(mWebSocketMock->mServerName, QStringLiteral("ServerName"));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void port()
|
|
|
|
{
|
|
|
|
mServer->start(QStringLiteral("ServerName"));
|
|
|
|
QCOMPARE(mAdvertiserMock->mPort, mWebSocketMock->getServerPort());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void stopAdvertisingOnConnection()
|
|
|
|
{
|
|
|
|
mServer->start(QStringLiteral("ServerName"));
|
|
|
|
mWebSocketMock->setConnected(true);
|
|
|
|
|
|
|
|
QVERIFY(!mAdvertiserMock);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void startAdvertisingOnConnectionClosed()
|
|
|
|
{
|
|
|
|
mServer->start(QStringLiteral("ServerName"));
|
|
|
|
mWebSocketMock->setConnected(true);
|
|
|
|
mWebSocketMock->setConnected(false);
|
|
|
|
|
|
|
|
QVERIFY(mAdvertiserMock);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2019-01-03 15:06:22 +01:00
|
|
|
QTEST_GUILESS_MAIN(test_RemoteServerImpl)
|
|
|
|
#include "test_RemoteServerImpl.moc"
|