File indexing completed on 2024-05-12 05:17:10

0001 /*
0002    SPDX-FileCopyrightText: 2015 Christian Mollekopf <mollekopf@kolabsys.com>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "kimap/idjob.h"
0008 #include "kimap/session.h"
0009 #include "kimaptest/fakeserver.h"
0010 
0011 #include <QTest>
0012 
0013 using ArrayMap = QMap<QByteArray, QByteArray>;
0014 Q_DECLARE_METATYPE(ArrayMap)
0015 
0016 class IdJobTest : public QObject
0017 {
0018     Q_OBJECT
0019 
0020 private Q_SLOTS:
0021 
0022     void testId_data()
0023     {
0024         QTest::addColumn<QList<QByteArray>>("scenario");
0025         QTest::addColumn<ArrayMap>("values");
0026         QList<QByteArray> scenario;
0027         scenario << "S: * PREAUTH"
0028                  << R"(C: A000001 ID ("name" "clientid"))"
0029                  << "S: * ID NIL"
0030                  << "S: A000001 OK ID completed";
0031 
0032         ArrayMap values;
0033         values.insert("name", "clientid");
0034         QTest::newRow("good") << scenario << values;
0035     }
0036 
0037     void testId()
0038     {
0039         QFETCH(QList<QByteArray>, scenario);
0040         QFETCH(ArrayMap, values);
0041 
0042         FakeServer fakeServer;
0043         fakeServer.setScenario(scenario);
0044         fakeServer.startAndWait();
0045         KIMAP::Session session(QStringLiteral("127.0.0.1"), 5989);
0046 
0047         auto job = new KIMAP::IdJob(&session);
0048         const auto keys = values.keys();
0049         for (const QByteArray &key : keys) {
0050             job->setField(key, values.value(key));
0051         }
0052         bool result = job->exec();
0053         QVERIFY(result);
0054         fakeServer.quit();
0055     }
0056 };
0057 
0058 QTEST_GUILESS_MAIN(IdJobTest)
0059 
0060 #include "idjobtest.moc"