AusweisApp2/test/qt/jsonapi/test_MsgHandlerEnterCan.cpp

149 lines
4.5 KiB
C++
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*!
* \brief Unit tests for \ref MsgHandlerEnterCan
*
2017-12-20 14:54:05 +01:00
* \copyright Copyright (c) 2016-2017 Governikus GmbH & Co. KG, Germany
2017-07-03 09:30:10 +02:00
*/
#include "messages/MsgHandlerEnterCan.h"
#include "MessageDispatcher.h"
#include "MockReaderManagerPlugIn.h"
#include "ReaderManager.h"
#include <QtPlugin>
2017-09-15 10:23:30 +02:00
#include <QTest>
2017-07-03 09:30:10 +02:00
Q_IMPORT_PLUGIN(MockReaderManagerPlugIn)
using namespace governikus;
class test_MsgHandlerEnterCan
: public QObject
{
Q_OBJECT
static void setValidCanState(MessageDispatcher& pDispatcher, const QString& pState = QStringLiteral("StateEstablishPaceCan"))
{
QSharedPointer<WorkflowContext> context(new WorkflowContext());
pDispatcher.init(context);
QByteArray expected;
if (pState == QLatin1String("StateEstablishPaceCan"))
{
expected = "{\"msg\":\"ENTER_CAN\"}";
}
QCOMPARE(pDispatcher.processStateChange(pState), expected);
}
private Q_SLOTS:
void initTestCase()
{
ReaderManager::getInstance().init();
ReaderManager::getInstance().getPlugInInfos(); // just to wait until initialization finished
}
void cleanupTestCase()
{
ReaderManager::getInstance().shutdown();
}
void undefined()
{
MessageDispatcher dispatcher;
setValidCanState(dispatcher);
QByteArray msg("{\"cmd\": \"SET_CAN\"}");
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"error\":\"Value cannot be undefined\",\"msg\":\"ENTER_CAN\"}"));
}
void invalid()
{
MessageDispatcher dispatcher;
setValidCanState(dispatcher);
2017-07-03 09:33:28 +02:00
QByteArray msg("{\"cmd\": \"SET_CAN\", \"value\": 123456}");
2017-07-03 09:30:10 +02:00
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"error\":\"Invalid value\",\"msg\":\"ENTER_CAN\"}"));
}
void badInput()
{
MessageDispatcher dispatcher;
setValidCanState(dispatcher);
2017-07-03 09:33:28 +02:00
QByteArray msg("{\"cmd\": \"SET_CAN\", \"value\": \"12345\"}");
2017-07-03 09:30:10 +02:00
QByteArray expected("{\"error\":\"You must provide 6 digits\",\"msg\":\"ENTER_CAN\"}");
QCOMPARE(dispatcher.processCommand(msg), expected);
2017-07-03 09:33:28 +02:00
msg = "{\"cmd\": \"SET_CAN\", \"value\": \"1234567\"}";
2017-07-03 09:30:10 +02:00
QCOMPARE(dispatcher.processCommand(msg), expected);
2017-07-03 09:33:28 +02:00
msg = "{\"cmd\": \"SET_CAN\", \"value\": \"abcdef\"}";
2017-07-03 09:30:10 +02:00
QCOMPARE(dispatcher.processCommand(msg), expected);
2017-07-03 09:33:28 +02:00
msg = "{\"cmd\": \"SET_CAN\", \"value\": \"\"}";
2017-07-03 09:30:10 +02:00
QCOMPARE(dispatcher.processCommand(msg), expected);
2017-07-03 09:33:28 +02:00
msg = "{\"cmd\": \"SET_CAN\", \"value\": \"123456a\"}";
2017-07-03 09:30:10 +02:00
QCOMPARE(dispatcher.processCommand(msg), expected);
2017-07-03 09:33:28 +02:00
msg = "{\"cmd\": \"SET_CAN\", \"value\": \"12x456\"}";
2017-07-03 09:30:10 +02:00
QCOMPARE(dispatcher.processCommand(msg), expected);
}
void badState()
{
MessageDispatcher dispatcher;
setValidCanState(dispatcher, QStringLiteral("invalid"));
2017-07-03 09:33:28 +02:00
QByteArray msg("{\"cmd\": \"SET_CAN\", \"value\": \"12345\"}");
2017-07-03 09:30:10 +02:00
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"error\":\"SET_CAN\",\"msg\":\"BAD_STATE\"}"));
2017-07-03 09:33:28 +02:00
msg = "{\"cmd\": \"SET_CAN\", \"value\": \"123456\"}";
2017-07-03 09:30:10 +02:00
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"error\":\"SET_CAN\",\"msg\":\"BAD_STATE\"}"));
}
void noDirectResponseIfCanLooksValid()
{
MessageDispatcher dispatcher;
setValidCanState(dispatcher);
2017-07-03 09:33:28 +02:00
QByteArray msg("{\"cmd\": \"SET_CAN\", \"value\": \"123456\"}");
2017-07-03 09:30:10 +02:00
QCOMPARE(dispatcher.processCommand(msg), QByteArray());
}
void readerInfo()
{
MockReader* reader = MockReaderManagerPlugIn::getInstance().addReader("MockReader CARD");
reader->setCard(MockCardConfig());
QSharedPointer<WorkflowContext> context(new WorkflowContext());
MessageDispatcher dispatcher;
dispatcher.init(context);
context->setReaderName("MockReader");
QCOMPARE(dispatcher.processStateChange("StateEstablishPaceCan"), QByteArray("{\"msg\":\"ENTER_CAN\"}"));
2017-07-03 09:33:28 +02:00
QByteArray msg = "{\"cmd\": \"SET_CAN\", \"value\": \"54321\"}";
2017-07-03 09:30:10 +02:00
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"error\":\"You must provide 6 digits\",\"msg\":\"ENTER_CAN\"}"));
context->setReaderName("MockReader CARD");
2017-09-15 10:23:30 +02:00
QCOMPARE(dispatcher.processStateChange("StateEstablishPaceCan"), QByteArray("{\"msg\":\"ENTER_CAN\",\"reader\":{\"attached\":true,\"card\":{\"deactivated\":false,\"inoperative\":false,\"retryCounter\":-1},\"name\":\"MockReader CARD\"}}"));
2017-07-03 09:33:28 +02:00
msg = "{\"cmd\": \"SET_CAN\", \"value\": \"54321\"}";
2017-09-15 10:23:30 +02:00
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"error\":\"You must provide 6 digits\",\"msg\":\"ENTER_CAN\",\"reader\":{\"attached\":true,\"card\":{\"deactivated\":false,\"inoperative\":false,\"retryCounter\":-1},\"name\":\"MockReader CARD\"}}"));
2017-07-03 09:30:10 +02:00
}
};
QTEST_GUILESS_MAIN(test_MsgHandlerEnterCan)
#include "test_MsgHandlerEnterCan.moc"