130 lines
4.9 KiB
C++
130 lines
4.9 KiB
C++
|
/*!
|
||
|
* \brief Unit tests for \ref MsgHandlerReader
|
||
|
*
|
||
|
* \copyright Copyright (c) 2016 Governikus GmbH & Co. KG
|
||
|
*/
|
||
|
|
||
|
#include "messages/MsgHandlerReader.h"
|
||
|
|
||
|
#include "MessageDispatcher.h"
|
||
|
#include "MockReaderManagerPlugIn.h"
|
||
|
#include "ReaderManager.h"
|
||
|
|
||
|
#include <QtTest>
|
||
|
|
||
|
Q_IMPORT_PLUGIN(MockReaderManagerPlugIn)
|
||
|
|
||
|
using namespace governikus;
|
||
|
|
||
|
class test_MsgHandlerReader
|
||
|
: public QObject
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
private Q_SLOTS:
|
||
|
void initTestCase()
|
||
|
{
|
||
|
ReaderManager::getInstance().init();
|
||
|
ReaderManager::getInstance().getPlugInInfos(); // just to wait until initialization finished
|
||
|
}
|
||
|
|
||
|
|
||
|
void cleanupTestCase()
|
||
|
{
|
||
|
ReaderManager::getInstance().shutdown();
|
||
|
}
|
||
|
|
||
|
|
||
|
void ctor()
|
||
|
{
|
||
|
MockReaderManagerPlugIn::getInstance().addReader("MockReader 0815");
|
||
|
|
||
|
MsgHandlerReader noReader("MockReader");
|
||
|
QCOMPARE(noReader.toJson(), QByteArray("{\"attached\":false,\"msg\":\"READER\",\"name\":\"MockReader\"}"));
|
||
|
|
||
|
MsgHandlerReader reader("MockReader 0815");
|
||
|
QCOMPARE(reader.toJson(), QByteArray("{\"attached\":true,\"card\":{\"inserted\":false},\"msg\":\"READER\",\"name\":\"MockReader 0815\"}"));
|
||
|
}
|
||
|
|
||
|
|
||
|
void error()
|
||
|
{
|
||
|
MessageDispatcher dispatcher;
|
||
|
QByteArray msg("{\"cmd\": \"GET_READER\"}");
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"error\":\"Name cannot be undefined\",\"msg\":\"READER\"}"));
|
||
|
|
||
|
msg = "{\"cmd\": \"GET_READER\", \"name\": 5}";
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"error\":\"Invalid name\",\"msg\":\"READER\"}"));
|
||
|
}
|
||
|
|
||
|
|
||
|
void oneReaderWithoutCard()
|
||
|
{
|
||
|
MockReaderManagerPlugIn::getInstance().addReader("MockReader 0815");
|
||
|
|
||
|
MessageDispatcher dispatcher;
|
||
|
QByteArray msg("{\"cmd\": \"GET_READER\", \"name\": \"MockReader 081\"}");
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":false,\"msg\":\"READER\",\"name\":\"MockReader 081\"}"));
|
||
|
|
||
|
msg = "{\"cmd\": \"GET_READER\", \"name\": \"MockReader 0815\"}";
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":{\"inserted\":false},\"msg\":\"READER\",\"name\":\"MockReader 0815\"}"));
|
||
|
|
||
|
MockReaderManagerPlugIn::getInstance().removeReader("MockReader 0815");
|
||
|
msg = "{\"cmd\": \"GET_READER\", \"name\": \"MockReader 0815\"}";
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":false,\"msg\":\"READER\",\"name\":\"MockReader 0815\"}"));
|
||
|
}
|
||
|
|
||
|
|
||
|
void oneReaderWithCard()
|
||
|
{
|
||
|
MockReader* reader = MockReaderManagerPlugIn::getInstance().addReader("MockReader 0815");
|
||
|
reader->setCard(MockCardConfig());
|
||
|
|
||
|
MessageDispatcher dispatcher;
|
||
|
QByteArray msg("{\"cmd\": \"GET_READER\", \"name\": \"MockReader 0815\"}");
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":{\"deactivated\":false,\"inserted\":true,\"retryCounter\":-1},\"msg\":\"READER\",\"name\":\"MockReader 0815\"}"));
|
||
|
}
|
||
|
|
||
|
|
||
|
void multipleReaderWithCard()
|
||
|
{
|
||
|
MockReader* reader = MockReaderManagerPlugIn::getInstance().addReader("MockReader 0815");
|
||
|
reader->setCard(MockCardConfig());
|
||
|
reader = MockReaderManagerPlugIn::getInstance().addReader("ReaderMock");
|
||
|
reader->setCard(MockCardConfig());
|
||
|
MockReaderManagerPlugIn::getInstance().addReader("ReaderMockXYZ");
|
||
|
|
||
|
reader = MockReaderManagerPlugIn::getInstance().addReader("SpecialMock");
|
||
|
reader->setCard(MockCardConfig());
|
||
|
reader->getReaderInfo().setCardInfo(CardInfo(CardType::UNKNOWN));
|
||
|
|
||
|
|
||
|
reader = MockReaderManagerPlugIn::getInstance().addReader("SpecialMockWithGermanCard");
|
||
|
reader->setCard(MockCardConfig());
|
||
|
auto cardInfo = CardInfo(CardType::EID_CARD, QSharedPointer<const EFCardAccess>(), 3, true);
|
||
|
reader->getReaderInfo().setCardInfo(cardInfo);
|
||
|
|
||
|
|
||
|
MessageDispatcher dispatcher;
|
||
|
QByteArray msg("{\"cmd\": \"GET_READER\", \"name\": \"MockReader 0815\"}");
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":{\"deactivated\":false,\"inserted\":true,\"retryCounter\":-1},\"msg\":\"READER\",\"name\":\"MockReader 0815\"}"));
|
||
|
|
||
|
msg = "{\"cmd\": \"GET_READER\", \"name\": \"ReaderMock\"}";
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":{\"deactivated\":false,\"inserted\":true,\"retryCounter\":-1},\"msg\":\"READER\",\"name\":\"ReaderMock\"}"));
|
||
|
|
||
|
msg = "{\"cmd\": \"GET_READER\", \"name\": \"ReaderMockXYZ\"}";
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":{\"inserted\":false},\"msg\":\"READER\",\"name\":\"ReaderMockXYZ\"}"));
|
||
|
|
||
|
msg = "{\"cmd\": \"GET_READER\", \"name\": \"SpecialMock\"}";
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":{\"inserted\":false},\"msg\":\"READER\",\"name\":\"SpecialMock\"}"));
|
||
|
|
||
|
msg = "{\"cmd\": \"GET_READER\", \"name\": \"SpecialMockWithGermanCard\"}";
|
||
|
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":{\"deactivated\":true,\"inserted\":true,\"retryCounter\":3},\"msg\":\"READER\",\"name\":\"SpecialMockWithGermanCard\"}"));
|
||
|
}
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
QTEST_GUILESS_MAIN(test_MsgHandlerReader)
|
||
|
#include "test_MsgHandlerReader.moc"
|