AusweisApp2/test/qt/jsonapi/test_MsgHandlerEnterPuk.cpp

144 lines
3.6 KiB
C++
Raw Normal View History

2017-07-03 09:33:28 +02:00
/*!
* \brief Unit tests for \ref MsgHandlerEnterPuk
*
2019-05-22 10:08:38 +02:00
* \copyright Copyright (c) 2016-2019 Governikus GmbH & Co. KG, Germany
2017-07-03 09:33:28 +02:00
*/
#include "messages/MsgHandlerEnterPuk.h"
2019-01-03 15:06:22 +01:00
#include "MsgHandlerEnterPassword.h"
2017-07-03 09:33:28 +02:00
#include "MessageDispatcher.h"
2017-09-15 10:23:30 +02:00
#include "ReaderManager.h"
2017-07-03 09:33:28 +02:00
2019-01-03 15:06:22 +01:00
#include "MockReaderManagerPlugIn.h"
2017-07-03 09:33:28 +02:00
#include <QtPlugin>
2019-01-03 15:06:22 +01:00
#include <QtTest>
2017-07-03 09:33:28 +02:00
Q_IMPORT_PLUGIN(MockReaderManagerPlugIn)
using namespace governikus;
class test_MsgHandlerEnterPuk
: public QObject
{
Q_OBJECT
2019-01-03 15:06:22 +01:00
static void setValidPukState(MessageDispatcher& pDispatcher,
bool pSelectReader = true,
bool pBasicReader = true,
const PacePasswordId pPasswordID = PacePasswordId::PACE_PUK)
2017-07-03 09:33:28 +02:00
{
2019-01-03 15:06:22 +01:00
setValidState(pDispatcher, pSelectReader, pBasicReader, pPasswordID);
2017-07-03 09:33:28 +02:00
}
private Q_SLOTS:
2017-09-15 10:23:30 +02:00
void initTestCase()
{
2019-01-03 15:06:22 +01:00
const auto readerManager = Env::getSingleton<ReaderManager>();
readerManager->init();
readerManager->getPlugInInfos(); // just to wait until initialization finished
2017-09-15 10:23:30 +02:00
}
void cleanupTestCase()
{
2019-01-03 15:06:22 +01:00
Env::getSingleton<ReaderManager>()->shutdown();
}
void cleanup()
{
MockReaderManagerPlugIn::getInstance().removeAllReader();
2017-09-15 10:23:30 +02:00
}
2017-07-03 09:33:28 +02:00
void stateMsg()
{
MessageDispatcher dispatcher;
2019-01-03 15:06:22 +01:00
setValidPukState(dispatcher);
2017-07-03 09:33:28 +02:00
}
2017-09-15 10:23:30 +02:00
void undefined()
{
MessageDispatcher dispatcher;
2019-01-03 15:06:22 +01:00
setValidPukState(dispatcher);
2017-09-15 10:23:30 +02:00
2019-01-03 15:06:22 +01:00
const QByteArray msg(R"({"cmd": "SET_PUK"})");
QCOMPARE(dispatcher.processCommand(msg), addReaderData(R"({"error":"Value cannot be undefined","msg":"ENTER_PUK"})"));
2017-09-15 10:23:30 +02:00
}
void invalid()
{
MessageDispatcher dispatcher;
2019-01-03 15:06:22 +01:00
setValidPukState(dispatcher);
2017-09-15 10:23:30 +02:00
2019-01-03 15:06:22 +01:00
const QByteArray msg(R"({"cmd": "SET_PUK", "value": 12345667890})");
QCOMPARE(dispatcher.processCommand(msg), addReaderData(R"({"error":"Invalid value","msg":"ENTER_PUK"})"));
2017-09-15 10:23:30 +02:00
}
void badInput()
{
MessageDispatcher dispatcher;
2019-01-03 15:06:22 +01:00
setValidPukState(dispatcher);
2017-09-15 10:23:30 +02:00
2019-01-03 15:06:22 +01:00
QByteArray msg(R"({"cmd": "SET_PUK", "value": "123456"})");
const QByteArray expected(addReaderData(R"({"error":"You must provide 10 digits","msg":"ENTER_PUK"})"));
2017-09-15 10:23:30 +02:00
QCOMPARE(dispatcher.processCommand(msg), expected);
2019-01-03 15:06:22 +01:00
msg = (R"({"cmd": "SET_PUK", "value": "12345"})");
2017-09-15 10:23:30 +02:00
QCOMPARE(dispatcher.processCommand(msg), expected);
}
void badState()
{
MessageDispatcher dispatcher;
2019-01-03 15:06:22 +01:00
setValidPukState(dispatcher, true, true, PacePasswordId::UNKNOWN);
2017-09-15 10:23:30 +02:00
2019-01-03 15:06:22 +01:00
QByteArray msg(R"({"cmd": "SET_PUK", "value": "123456789"})");
2017-09-15 10:23:30 +02:00
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"error\":\"SET_PUK\",\"msg\":\"BAD_STATE\"}"));
2019-01-03 15:06:22 +01:00
msg = (R"({"cmd": "SET_PUK", "value": "1234567890"})");
2017-09-15 10:23:30 +02:00
QCOMPARE(dispatcher.processCommand(msg), QByteArray("{\"error\":\"SET_PUK\",\"msg\":\"BAD_STATE\"}"));
}
void noDirectResponseIfPukLooksValid()
{
MessageDispatcher dispatcher;
2019-01-03 15:06:22 +01:00
setValidPukState(dispatcher);
2017-09-15 10:23:30 +02:00
2019-01-03 15:06:22 +01:00
const QByteArray msg(R"({"cmd": "SET_PUK", "value": "1234567890"})");
2017-09-15 10:23:30 +02:00
QCOMPARE(dispatcher.processCommand(msg), QByteArray());
}
2019-01-03 15:06:22 +01:00
void pinPadReader()
2017-09-15 10:23:30 +02:00
{
MessageDispatcher dispatcher;
2019-01-03 15:06:22 +01:00
setValidPukState(dispatcher, true, false);
2017-09-15 10:23:30 +02:00
2019-01-03 15:06:22 +01:00
QByteArray msg(R"({"cmd": "SET_PUK", "value": "1234567890"})");
QByteArray expected(addReaderData(R"({"error":"Value cannot be defined","msg":"ENTER_PUK"})", true));
QCOMPARE(dispatcher.processCommand(msg), expected);
2017-09-15 10:23:30 +02:00
2019-01-03 15:06:22 +01:00
msg = QByteArray(R"({"cmd": "SET_PUK", "value": ""})");
expected = QByteArray(addReaderData(R"({"error":"Value cannot be defined","msg":"ENTER_PUK"})", true));
QCOMPARE(dispatcher.processCommand(msg), expected);
2017-09-15 10:23:30 +02:00
2019-01-03 15:06:22 +01:00
msg = QByteArray(R"({"cmd": "SET_PUK"})");
QCOMPARE(dispatcher.processCommand(msg), QByteArray());
2017-09-15 10:23:30 +02:00
}
2017-07-03 09:33:28 +02:00
};
QTEST_GUILESS_MAIN(test_MsgHandlerEnterPuk)
#include "test_MsgHandlerEnterPuk.moc"