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

0001 /*
0002    SPDX-FileCopyrightText: 2020 Daniel Vrátil <dvratil@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include <QTest>
0008 
0009 #include "kimap/enablejob.h"
0010 #include "kimap/session.h"
0011 #include "kimaptest/fakeserver.h"
0012 
0013 #include <QTest>
0014 
0015 Q_DECLARE_METATYPE(QList<QList<QByteArray>>)
0016 
0017 class EnableJobTest : public QObject
0018 {
0019     Q_OBJECT
0020 
0021 private Q_SLOTS:
0022 
0023     void testEnable_data()
0024     {
0025         QTest::addColumn<QList<QByteArray>>("scenario");
0026         QTest::addColumn<QStringList>("reqCapabilities");
0027         QTest::addColumn<QStringList>("supportedCaps");
0028 
0029         QList<QByteArray> scenario;
0030         scenario << FakeServer::preauth() << "C: A000001 ENABLE CONDSTORE X-GOOD-IDEA"
0031                  << "S: * ENABLED X-GOOD-IDEA"
0032                  << "S: A000001 OK Enabled";
0033         QStringList reqCapabilities = {QStringLiteral("CONDSTORE"), QStringLiteral("X-GOOD-IDEA")};
0034         QStringList supportedCaps = {QStringLiteral("X-GOOD-IDEA")};
0035         QTest::newRow("one feature") << scenario << reqCapabilities << supportedCaps;
0036 
0037         scenario.clear();
0038         scenario << FakeServer::preauth() << "C: A000001 ENABLE FEATURE1 FEATURE2"
0039                  << "S: * ENABLED FEATURE1 FEATURE2"
0040                  << "S: A000001 OK Enabled";
0041         reqCapabilities = QStringList{QStringLiteral("FEATURE1"), QStringLiteral("FEATURE2")};
0042         supportedCaps = QStringList{QStringLiteral("FEATURE1"), QStringLiteral("FEATURE2")};
0043         QTest::newRow("both features") << scenario << reqCapabilities << supportedCaps;
0044     }
0045 
0046     void testEnable()
0047     {
0048         QFETCH(QList<QByteArray>, scenario);
0049         QFETCH(QStringList, reqCapabilities);
0050         QFETCH(QStringList, supportedCaps);
0051 
0052         FakeServer fakeServer;
0053         fakeServer.setScenario(scenario);
0054         fakeServer.startAndWait();
0055 
0056         KIMAP::Session session(QStringLiteral("127.0.0.1"), 5989);
0057 
0058         auto job = new KIMAP::EnableJob(&session);
0059         job->setCapabilities(reqCapabilities);
0060         QVERIFY(job->exec());
0061 
0062         QCOMPARE(job->enabledCapabilities(), supportedCaps);
0063 
0064         fakeServer.quit();
0065     }
0066 };
0067 
0068 QTEST_GUILESS_MAIN(EnableJobTest)
0069 
0070 #include "enablejobtest.moc"