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

0001 /*
0002    SPDX-FileCopyrightText: 2016 Daniel Vrátil <dvratil@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include <QTest>
0008 
0009 #include "../src/movejob.h"
0010 #include "kimap/imapset.h"
0011 #include "kimap/session.h"
0012 #include "kimaptest/fakeserver.h"
0013 
0014 #include <QTest>
0015 
0016 class MoveJobTest : public QObject
0017 {
0018     Q_OBJECT
0019 
0020 private Q_SLOTS:
0021 
0022     void testMove_data()
0023     {
0024         QTest::addColumn<bool>("uidBased");
0025         QTest::addColumn<qint64>("id");
0026         QTest::addColumn<qint64>("resultUid");
0027         QTest::addColumn<QString>("mailbox");
0028         QTest::addColumn<QList<QByteArray>>("scenario");
0029 
0030         QList<QByteArray> scenario;
0031         scenario << FakeServer::preauth() << "C: A000001 MOVE 3 \"foo\""
0032                  << "S: * OK [COPYUID 12345 3 7]"
0033                  << "S: A000001 OK MOVE completed";
0034 
0035         QTest::newRow("not uid based") << false << qint64(3) << qint64(7) << QStringLiteral("foo") << scenario;
0036 
0037         scenario.clear();
0038         scenario << FakeServer::preauth() << "C: A000001 UID MOVE 1024 \"bar\""
0039                  << "S: * OK [COPYUID 12346 4 2048]"
0040                  << "S: A000001 OK MOVE completed";
0041 
0042         QTest::newRow("uid based") << true << qint64(1024) << qint64(2048) << QStringLiteral("bar") << scenario;
0043     }
0044 
0045     void testMove()
0046     {
0047         QFETCH(bool, uidBased);
0048         QFETCH(qint64, id);
0049         QFETCH(qint64, resultUid);
0050         QFETCH(QString, mailbox);
0051         QFETCH(QList<QByteArray>, scenario);
0052 
0053         FakeServer fakeServer;
0054         fakeServer.setScenario(scenario);
0055         fakeServer.startAndWait();
0056 
0057         KIMAP::Session session(QStringLiteral("127.0.0.1"), 5989);
0058 
0059         auto job = new KIMAP::MoveJob(&session);
0060         job->setMailBox(mailbox);
0061         job->setUidBased(uidBased);
0062         job->setSequenceSet(KIMAP::ImapSet(id));
0063         bool result = job->exec();
0064         QVERIFY(result);
0065         QCOMPARE(job->resultingUids(), KIMAP::ImapSet(resultUid));
0066 
0067         fakeServer.quit();
0068     }
0069 };
0070 
0071 QTEST_GUILESS_MAIN(MoveJobTest)
0072 
0073 #include "movejobtest.moc"