/*! * \brief Unit tests for \ref MsgHandlerReader * * \copyright Copyright (c) 2016-2019 Governikus GmbH & Co. KG, Germany */ #include "messages/MsgHandlerReader.h" #include "MessageDispatcher.h" #include "MockReaderManagerPlugIn.h" #include "ReaderManager.h" #include Q_IMPORT_PLUGIN(MockReaderManagerPlugIn) using namespace governikus; class test_MsgHandlerReader : public QObject { Q_OBJECT private Q_SLOTS: void initTestCase() { const auto readerManager = Env::getSingleton(); readerManager->init(); readerManager->getPlugInInfos(); // just to wait until initialization finished } void cleanupTestCase() { Env::getSingleton()->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\":null,\"keypad\":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\":null,\"keypad\":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,\"inoperative\":false,\"retryCounter\":-1},\"keypad\":false,\"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(), 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,\"inoperative\":false,\"retryCounter\":-1},\"keypad\":false,\"msg\":\"READER\",\"name\":\"MockReader 0815\"}")); msg = "{\"cmd\": \"GET_READER\", \"name\": \"ReaderMock\"}"; QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":{\"deactivated\":false,\"inoperative\":false,\"retryCounter\":-1},\"keypad\":false,\"msg\":\"READER\",\"name\":\"ReaderMock\"}")); msg = "{\"cmd\": \"GET_READER\", \"name\": \"ReaderMockXYZ\"}"; QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":null,\"keypad\":false,\"msg\":\"READER\",\"name\":\"ReaderMockXYZ\"}")); msg = "{\"cmd\": \"GET_READER\", \"name\": \"SpecialMock\"}"; QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":null,\"keypad\":false,\"msg\":\"READER\",\"name\":\"SpecialMock\"}")); msg = "{\"cmd\": \"GET_READER\", \"name\": \"SpecialMockWithGermanCard\"}"; QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"attached\":true,\"card\":{\"deactivated\":true,\"inoperative\":false,\"retryCounter\":3},\"keypad\":false,\"msg\":\"READER\",\"name\":\"SpecialMockWithGermanCard\"}")); } }; QTEST_GUILESS_MAIN(test_MsgHandlerReader) #include "test_MsgHandlerReader.moc"