1 /*!
2 * \copyright Copyright (c) 2018-2021 Governikus GmbH & Co. KG, Germany
3 */
4
5 #include "MsgHandlerEnterPassword.h"
6
7 #include "MockCardConnection.h"
8 #include "MockReaderManagerPlugIn.h"
9 #include "ReaderManager.h"
10
11 #include <QTest>
12
13 using namespace governikus;
14
setValidState(MessageDispatcher & pDispatcher,bool pSelectReader,bool pBasicReader,const PacePasswordId pPasswordID,const QLatin1String & pState,const QSharedPointer<WorkflowContext> pContext)15 void governikus::setValidState(MessageDispatcher& pDispatcher,
16 bool pSelectReader,
17 bool pBasicReader,
18 const PacePasswordId pPasswordID,
19 const QLatin1String& pState,
20 const QSharedPointer<WorkflowContext> pContext)
21 {
22 pDispatcher.init(pContext);
23 pContext->setEstablishPaceChannelType(pPasswordID);
24
25 QByteArray expected;
26 if (pPasswordID == PacePasswordId::PACE_PIN)
27 {
28 expected = R"({"msg":"ENTER_PIN"})";
29 }
30 else if (pPasswordID == PacePasswordId::PACE_CAN)
31 {
32 expected = R"({"msg":"ENTER_CAN"})";
33 }
34 else if (pPasswordID == PacePasswordId::PACE_PUK)
35 {
36 expected = R"({"msg":"ENTER_PUK"})";
37 }
38
39 if (pState == QLatin1String("StateEnterNewPacePin"))
40 {
41 expected = R"({"msg":"ENTER_NEW_PIN"})";
42 }
43
44 QCOMPARE(pDispatcher.processStateChange(pState), expected);
45
46 if (pSelectReader)
47 {
48 auto* reader = MockReaderManagerPlugIn::getInstance().addReader("MockReader CARD");
49 auto info = reader->getReaderInfo();
50 info.setBasicReader(pBasicReader);
51 reader->setReaderInfo(info);
52 reader->setCard(MockCardConfig());
53 pContext->setReaderName("MockReader CARD");
54
55 QSharedPointer<CardConnection> cardConnection(new MockCardConnection(reader->getReaderInfo()));
56 pContext->setCardConnection(cardConnection);
57 pContext->rememberReader();
58 }
59 }
60
61
addReaderData(const char * pData,bool pKeyPad)62 QByteArray governikus::addReaderData(const char* pData, bool pKeyPad)
63 {
64 const QByteArray data(pData);
65 const QByteArray part1(R"(,"reader":{"attached":true,"card":{"deactivated":false,"inoperative":false,"retryCounter":-1},"keypad":)");
66 const QByteArray keypad = pKeyPad ? QByteArrayLiteral("true") : QByteArrayLiteral("false");
67 const QByteArray part2(R"(,"name":"MockReader CARD"})");
68 return data.mid(0, data.size() - 1) + part1 + keypad + part2 + QByteArrayLiteral("}");
69 }
70