1 /*!
2  * \brief Unit tests for \ref MsgHandlerInsertCard
3  *
4  * \copyright Copyright (c) 2016-2021 Governikus GmbH & Co. KG, Germany
5  */
6 
7 #include "messages/MsgHandlerInsertCard.h"
8 
9 #include "MessageDispatcher.h"
10 #include "MockReaderManagerPlugIn.h"
11 #include "ReaderManager.h"
12 
13 #include <QtPlugin>
14 #include <QTest>
15 
16 Q_IMPORT_PLUGIN(MockReaderManagerPlugIn)
17 
18 using namespace governikus;
19 
20 class test_MsgHandlerInsertCard
21 	: public QObject
22 {
23 	Q_OBJECT
24 
setContext(MessageDispatcher & pDispatcher)25 	static void setContext(MessageDispatcher& pDispatcher)
26 	{
27 		QSharedPointer<WorkflowContext> context(new WorkflowContext());
28 		pDispatcher.init(context);
29 	}
30 
31 	private Q_SLOTS:
initTestCase()32 		void initTestCase()
33 		{
34 			const auto readerManager = Env::getSingleton<ReaderManager>();
35 			readerManager->init();
36 			readerManager->isScanRunning(); // just to wait until initialization finished
37 		}
38 
39 
cleanupTestCase()40 		void cleanupTestCase()
41 		{
42 			Env::getSingleton<ReaderManager>()->shutdown();
43 		}
44 
45 
ctor()46 		void ctor()
47 		{
48 			const QSharedPointer<WorkflowContext> context(new WorkflowContext());
49 			QCOMPARE(context->isStateApproved(), false);
50 
51 			MsgDispatcherContext ctx;
52 			ctx.setWorkflowContext(context);
53 			MsgHandlerInsertCard msg(ctx);
54 
55 			QCOMPARE(msg.toJson(), QByteArray("{\"msg\":\"INSERT_CARD\"}"));
56 			QCOMPARE(context->isStateApproved(), true);
57 		}
58 
59 
noReader()60 		void noReader()
61 		{
62 			MessageDispatcher dispatcher;
63 			setContext(dispatcher);
64 
65 			QCOMPARE(dispatcher.processStateChange(QStringLiteral("StateSelectReader")), QByteArray("{\"msg\":\"INSERT_CARD\"}"));
66 		}
67 
68 
readerWithoutCard()69 		void readerWithoutCard()
70 		{
71 			MockReaderManagerPlugIn::getInstance().addReader("MockReader 1");
72 			MockReaderManagerPlugIn::getInstance().addReader("MockReader 2");
73 			MockReaderManagerPlugIn::getInstance().addReader("MockReader 3");
74 
75 			MessageDispatcher dispatcher;
76 			setContext(dispatcher);
77 
78 			QCOMPARE(dispatcher.processStateChange(QStringLiteral("StateSelectReader")), QByteArray("{\"msg\":\"INSERT_CARD\"}"));
79 		}
80 
81 
readerWithCard()82 		void readerWithCard()
83 		{
84 			MockReaderManagerPlugIn::getInstance().addReader("MockReader 1");
85 			MockReader* reader = MockReaderManagerPlugIn::getInstance().addReader("MockReader CARD");
86 			reader->setCard(MockCardConfig());
87 
88 			MessageDispatcher dispatcher;
89 			setContext(dispatcher);
90 
91 			QCOMPARE(dispatcher.processStateChange(QStringLiteral("StateSelectReader")), QByteArray());
92 		}
93 
94 
95 };
96 
97 QTEST_GUILESS_MAIN(test_MsgHandlerInsertCard)
98 #include "test_MsgHandlerInsertCard.moc"
99