File indexing completed on 2025-03-09 04:47:28

0001 /*
0002    SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
0003    SPDX-FileContributor: Kevin Ottens <kevin@kdab.com>
0004 
0005    SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "dummypasswordrequester.h"
0009 
0010 #include <QTimer>
0011 
0012 #include <QTest>
0013 
0014 DummyPasswordRequester::DummyPasswordRequester(QObject *parent)
0015     : PasswordRequesterInterface(parent)
0016 {
0017     m_expectedCalls.reserve(10);
0018     m_results.reserve(10);
0019     for (int i = 0; i < 10; ++i) {
0020         m_expectedCalls << StandardRequest;
0021         m_results << PasswordRetrieved;
0022     }
0023 }
0024 
0025 QString DummyPasswordRequester::password() const
0026 {
0027     return m_password;
0028 }
0029 
0030 void DummyPasswordRequester::setPassword(const QString &password)
0031 {
0032     m_password = password;
0033 }
0034 
0035 void DummyPasswordRequester::setScenario(const QList<RequestType> &expectedCalls, const QList<ResultType> &results)
0036 {
0037     Q_ASSERT(expectedCalls.size() == results.size());
0038 
0039     m_expectedCalls = expectedCalls;
0040     m_results = results;
0041 }
0042 
0043 void DummyPasswordRequester::setDelays(const QList<int> &delays)
0044 {
0045     m_delays = delays;
0046 }
0047 
0048 void DummyPasswordRequester::requestPassword(RequestType request, const QString & /*serverError*/)
0049 {
0050     QVERIFY2(!m_expectedCalls.isEmpty(), QStringLiteral("Got unexpected call: %1").arg(request).toUtf8().constData());
0051     QCOMPARE((int)request, (int)m_expectedCalls.takeFirst());
0052 
0053     int delay = 20;
0054     if (!m_delays.isEmpty()) {
0055         delay = m_delays.takeFirst();
0056     }
0057 
0058     QTimer::singleShot(delay, this, &DummyPasswordRequester::emitResult);
0059 }
0060 
0061 void DummyPasswordRequester::emitResult()
0062 {
0063     ResultType result = m_results.takeFirst();
0064 
0065     if (result == PasswordRetrieved) {
0066         Q_EMIT done(result, m_password);
0067     } else {
0068         Q_EMIT done(result);
0069     }
0070 }
0071 
0072 #include "moc_dummypasswordrequester.cpp"