File: appendjobtest.cpp

package info (click to toggle)
kimap 25.12.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,648 kB
  • sloc: cpp: 12,450; makefile: 16; sh: 1
file content (95 lines) | stat: -rw-r--r-- 3,372 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
   SPDX-FileCopyrightText: 2013 Christian Mollekopf <mollekopf@kolabsys.com>

   SPDX-License-Identifier: GPL-2.0-or-later
*/

#include <QTest>

#include "kimap/appendjob.h"
#include "kimap/session.h"
#include "kimaptest/fakeserver.h"

#include <QDateTime>
#include <QTest>

class AppendJobTest : public QObject
{
    Q_OBJECT

private Q_SLOTS:

    void testAppend_data()
    {
        QTest::addColumn<QString>("mailbox");
        QTest::addColumn<QList<QByteArray>>("scenario");
        QTest::addColumn<QList<QByteArray>>("flags");
        QTest::addColumn<QDateTime>("internaldate");
        QTest::addColumn<QByteArray>("content");
        QTest::addColumn<qint64>("uid");

        QList<QByteArray> flags;
        flags << QByteArray("\\Seen");
        {
            QList<QByteArray> scenario;
            scenario << FakeServer::preauth() << "C: A000001 APPEND \"INBOX\" (\\Seen) {7}\r\ncontent"
                     << "S: A000001 OK APPEND completed. [ APPENDUID 492 2671 ]";
            QTest::newRow("good") << "INBOX" << scenario << flags << QDateTime() << QByteArray("content") << qint64(2671);
        }
        {
            QList<QByteArray> scenario;
            scenario << FakeServer::preauth() << "C: A000001 APPEND \"INBOX\" (\\Seen) \"26-Feb-2014 12:38:00 +0000\" {7}\r\ncontent"
                     << "S: A000001 OK APPEND completed. [ APPENDUID 493 2672 ]";
            QTest::newRow("good, with internalDate set")
                << "INBOX" << scenario << flags << QDateTime::fromString(QStringLiteral("2014-02-26T12:38:00Z"), Qt::ISODate) << QByteArray("content")
                << qint64(2672);
        }

        {
            QList<QByteArray> scenario;
            scenario << FakeServer::preauth() << "C: A000001 APPEND \"INBOX\" (\\Seen) {7}\r\ncontent"
                     << "S: BYE"
                     << "X";
            QTest::newRow("bad") << "INBOX" << scenario << flags << QDateTime() << QByteArray("content") << qint64(0);
        }
        {
            QList<QByteArray> scenario;
            scenario << FakeServer::preauth() << "C: A000001 APPEND \"INBOX\" (\\Seen) {7}\r\ncontent"
                     << "S: "
                     << "X";
            QTest::newRow("Don't crash on empty response") << "INBOX" << scenario << flags << QDateTime() << QByteArray("content") << qint64(0);
        }
    }

    void testAppend()
    {
        QFETCH(QString, mailbox);
        QFETCH(QList<QByteArray>, scenario);
        QFETCH(QList<QByteArray>, flags);
        QFETCH(QDateTime, internaldate);
        QFETCH(QByteArray, content);
        QFETCH(qint64, uid);

        FakeServer fakeServer;
        fakeServer.setScenario(scenario);
        fakeServer.startAndWait();
        KIMAP::Session session(QStringLiteral("127.0.0.1"), 5989);

        auto job = new KIMAP::AppendJob(&session);
        job->setContent(content);
        job->setFlags(flags);
        job->setInternalDate(internaldate);
        job->setMailBox(mailbox);
        const bool result = job->exec();
        QEXPECT_FAIL("bad", "Expected failure on connection abort", Continue);
        QEXPECT_FAIL("Don't crash on empty response", "Expected failure on connection abort", Continue);
        QVERIFY(result);
        QCOMPARE(job->uid(), uid);

        fakeServer.quit();
    }
};

QTEST_GUILESS_MAIN(AppendJobTest)

#include "appendjobtest.moc"