AusweisApp2/test/qt/qml/test_WorkflowModel.cpp

139 lines
3.7 KiB
C++

/*!
* \brief Unit tests for \ref WorkflowModel
*
* \copyright Copyright (c) 2018 Governikus GmbH & Co. KG, Germany
*/
#include "WorkflowModel.h"
#include "MockCardConnectionWorker.h"
#include <QDebug>
#include <QtTest>
using namespace governikus;
class test_WorkflowModel
: public QObject
{
Q_OBJECT
private Q_SLOTS:
void test_ResetContext()
{
WorkflowModel model;
QSharedPointer<WorkflowContext> context(new WorkflowContext());
QSignalSpy spyCurrentStateChanged(&model, &WorkflowModel::fireCurrentStateChanged);
QSignalSpy spyResultChanged(&model, &WorkflowModel::fireResultChanged);
QSignalSpy spyReaderPlugInTypeChanged(&model, &WorkflowModel::fireReaderPlugInTypeChanged);
QSignalSpy spyIsBasicReaderChanged(&model, &WorkflowModel::fireIsBasicReaderChanged);
model.resetContext();
QCOMPARE(spyCurrentStateChanged.count(), 1);
QCOMPARE(spyResultChanged.count(), 1);
model.resetContext(context);
QCOMPARE(spyCurrentStateChanged.count(), 2);
QCOMPARE(spyResultChanged.count(), 2);
Q_EMIT context->fireStateChanged(QString("state"));
QCOMPARE(spyCurrentStateChanged.count(), 3);
Q_EMIT context->fireResultChanged();
QCOMPARE(spyResultChanged.count(), 3);
Q_EMIT context->fireReaderPlugInTypesChanged();
QCOMPARE(spyReaderPlugInTypeChanged.count(), 1);
Q_EMIT context->fireCardConnectionChanged();
QCOMPARE(spyIsBasicReaderChanged.count(), 1);
}
void test_StartWorkflow()
{
WorkflowModel model;
QSignalSpy spy(&model, &WorkflowModel::fireStartWorkflow);
model.startWorkflow();
QCOMPARE(spy.count(), 1);
}
void test_CancelWorkflowOnPinBlocked()
{
WorkflowModel model;
QSharedPointer<WorkflowContext> context(new WorkflowContext());
model.mContext = context;
model.cancelWorkflowOnPinBlocked();
QCOMPARE(context->getStatus().getStatusCode(), GlobalStatus::Code::Workflow_Pin_Blocked_And_Puk_Objectionable);
}
void test_IsBasicReader()
{
QThread connectionThread;
connectionThread.start();
WorkflowModel model;
QSharedPointer<WorkflowContext> context(new WorkflowContext());
QVERIFY(model.isBasicReader());
model.mContext = context;
QVERIFY(model.isBasicReader());
MockReader reader;
reader.getReaderInfo().setBasicReader(false);
QSharedPointer<MockCardConnectionWorker> worker(new MockCardConnectionWorker(&reader));
worker->moveToThread(&connectionThread);
QSharedPointer<CardConnection> connection(new CardConnection(worker));
context->setCardConnection(connection);
model.mContext = context;
QVERIFY(!model.isBasicReader());
connectionThread.quit();
connectionThread.wait();
}
void test_ReaderPlugInType()
{
WorkflowModel model;
QSharedPointer<WorkflowContext> context(new WorkflowContext());
QCOMPARE(model.getReaderPlugInType(), ReaderManagerPlugInType::UNKNOWN);
model.mContext = context;
QCOMPARE(model.getReaderPlugInType(), ReaderManagerPlugInType::UNKNOWN);
model.setReaderPlugInType(ReaderManagerPlugInType::UNKNOWN);
QVERIFY(context->getReaderPlugInTypes().contains(ReaderManagerPlugInType::UNKNOWN));
QCOMPARE(model.getReaderPlugInType(), ReaderManagerPlugInType::UNKNOWN);
model.setReaderPlugInType(ReaderManagerPlugInType::NFC);
QVERIFY(context->getReaderPlugInTypes().contains(ReaderManagerPlugInType::NFC));
QCOMPARE(model.getReaderPlugInType(), ReaderManagerPlugInType::NFC);
}
void test_SelectedReaderHasCardNoConnection()
{
WorkflowModel model;
QSharedPointer<WorkflowContext> context(new WorkflowContext());
QVERIFY(!model.selectedReaderHasCard());
model.mContext = context;
QVERIFY(!model.selectedReaderHasCard());
}
};
QTEST_GUILESS_MAIN(test_WorkflowModel)
#include "test_WorkflowModel.moc"