File indexing completed on 2025-02-16 04:55:53

0001 /*
0002    SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "findaccountinfojobtest.h"
0008 #include "../abstractakonadiimapsettinginterface.h"
0009 #include "../sieveimappasswordprovider.h"
0010 #include "../util.h"
0011 #include "akonadiimapsettinginterfacetest.h"
0012 #include "util/findaccountinfojob.h"
0013 #include <QSignalSpy>
0014 #include <QTest>
0015 QTEST_MAIN(FindAccountInfoJobTest)
0016 
0017 class DataImapPasswordProvider : public KSieveCore::SieveImapPasswordProvider
0018 {
0019 public:
0020     DataImapPasswordProvider(AkonadiImapSettingInterfaceDataTest *data)
0021         : mData(data)
0022     {
0023     }
0024 
0025     void passwords(const QString &identifier) override
0026     {
0027         Q_UNUSED(identifier)
0028         Q_EMIT passwordsRequested(mData->password, mData->sieveCustomPassword);
0029     }
0030 
0031     AkonadiImapSettingInterfaceDataTest *const mData;
0032 };
0033 
0034 FindAccountInfoJobTest::FindAccountInfoJobTest(QObject *parent)
0035     : QObject(parent)
0036 {
0037 }
0038 
0039 void FindAccountInfoJobTest::shouldReturnEmptyInfo()
0040 {
0041     auto job = new KSieveCore::FindAccountInfoJob;
0042     job->setIdentifier(QStringLiteral("dummy"));
0043     job->setProvider({});
0044     QSignalSpy spy(job, &KSieveCore::FindAccountInfoJob::findAccountInfoFinished);
0045     job->start();
0046     spy.wait(1000);
0047     QCOMPARE(spy.count(), 1);
0048     const auto info = spy.at(0).at(0).value<KSieveCore::Util::AccountInfo>();
0049     QVERIFY(!info.sieveImapAccountSettings.isValid());
0050 }
0051 
0052 void FindAccountInfoJobTest::shouldAssignValue_data()
0053 {
0054     QTest::addColumn<AkonadiImapSettingInterfaceDataTest>("data");
0055     QTest::addColumn<KSieveCore::Util::AccountInfo>("accountInfo");
0056     QTest::addColumn<bool>("sieveImapAccountValid");
0057     QTest::addColumn<bool>("useVacationFile");
0058     QTest::newRow("default") << AkonadiImapSettingInterfaceDataTest() << KSieveCore::Util::AccountInfo() << false << false;
0059 
0060     {
0061         const int imapPort = 53;
0062         AkonadiImapSettingInterfaceDataTest data1;
0063         data1.sieveSupport = true;
0064         data1.sieveReuseConfig = true;
0065         data1.imapServer = QStringLiteral("foo.bla.com");
0066         data1.userName = QStringLiteral("kde");
0067         data1.sievePort = 543;
0068         data1.imapPort = imapPort;
0069         data1.sieveCustomUsername = QString();
0070         data1.sieveCustomAuthentification = QString();
0071         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0072         data1.safety = QStringLiteral("SAFETY");
0073         data1.alternateAuthentication = -1;
0074         // MailTransport::Transport::EnumAuthenticationType::CRAM_MD5 = 2
0075         data1.authentication = 2;
0076         data1.sieveAlternateUrl = QString();
0077         data1.password = QStringLiteral("password1");
0078         data1.sieveCustomPassword = QString();
0079 
0080         KSieveCore::Util::AccountInfo info1;
0081         const QString password = QStringLiteral("password1");
0082         const QString userName = QStringLiteral("kde");
0083         const int port = 543;
0084         info1.sieveUrl = QUrl::fromUserInput(QStringLiteral("sieve://foo.bla.com?x-mech=CRAM-MD5"));
0085         info1.sieveUrl.setPassword(password);
0086         info1.sieveUrl.setUserName(userName);
0087         info1.sieveUrl.setPort(port);
0088         info1.sieveImapAccountSettings.setServerName(QStringLiteral("foo.bla.com"));
0089         info1.sieveImapAccountSettings.setPort(imapPort);
0090         info1.sieveImapAccountSettings.setUserName(userName);
0091         info1.sieveImapAccountSettings.setPassword(password);
0092 
0093         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::Plain);
0094         // TODO fix encryptionmode
0095         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::Unencrypted);
0096 
0097         QTest::newRow("sievereuseconfig1") << data1 << info1 << true << false;
0098     }
0099 
0100     {
0101         const int imapPort = 53;
0102         AkonadiImapSettingInterfaceDataTest data1;
0103         data1.sieveSupport = true;
0104         data1.sieveReuseConfig = true;
0105         data1.imapServer = QStringLiteral("foo.bla.com");
0106         data1.userName = QStringLiteral("kde");
0107         data1.sievePort = 3;
0108         data1.imapPort = imapPort;
0109         data1.sieveCustomUsername = QString();
0110         data1.sieveCustomAuthentification = QString();
0111         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0112         data1.safety = QStringLiteral("SAFETY");
0113         data1.alternateAuthentication = -1;
0114         // MailTransport::Transport::EnumAuthenticationType::PLAIN = 0
0115         data1.authentication = 0;
0116         data1.sieveAlternateUrl = QString();
0117         data1.password = QStringLiteral("password2");
0118         data1.sieveCustomPassword = QString();
0119 
0120         KSieveCore::Util::AccountInfo info1;
0121         const QString password = QStringLiteral("password2");
0122         const QString userName = QStringLiteral("kde");
0123         const int port = 3;
0124         info1.sieveUrl = QUrl::fromUserInput(QStringLiteral("sieve://foo.bla.com/vacation.siv?x-mech=LOGIN"));
0125         info1.sieveUrl.setPassword(password);
0126         info1.sieveUrl.setUserName(userName);
0127         info1.sieveUrl.setPort(port);
0128         info1.sieveImapAccountSettings.setServerName(QStringLiteral("foo.bla.com"));
0129         info1.sieveImapAccountSettings.setPort(imapPort);
0130         info1.sieveImapAccountSettings.setUserName(userName);
0131         info1.sieveImapAccountSettings.setPassword(password);
0132 
0133         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::ClearText);
0134         // TODO fix encryptionmode
0135         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::Unencrypted);
0136 
0137         QTest::newRow("sievereuseconfig2") << data1 << info1 << true << true;
0138     }
0139     {
0140         const int imapPort = 53;
0141         AkonadiImapSettingInterfaceDataTest data1;
0142         data1.sieveSupport = true;
0143         data1.sieveReuseConfig = true;
0144         data1.imapServer = QStringLiteral("foo.bla.com");
0145         data1.userName = QStringLiteral("kde");
0146         data1.sievePort = 3;
0147         data1.imapPort = imapPort;
0148         data1.sieveCustomUsername = QString();
0149         data1.sieveCustomAuthentification = QString();
0150         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0151         data1.safety = QStringLiteral("SSL");
0152         data1.alternateAuthentication = -1;
0153         // MailTransport::Transport::EnumAuthenticationType::PLAIN = 0
0154         data1.authentication = 0;
0155         data1.sieveAlternateUrl = QString();
0156         data1.password = QStringLiteral("password2");
0157         data1.sieveCustomPassword = QString();
0158 
0159         KSieveCore::Util::AccountInfo info1;
0160         const QString password = QStringLiteral("password2");
0161         const QString userName = QStringLiteral("kde");
0162         const int port = 3;
0163         info1.sieveUrl = QUrl::fromUserInput(QStringLiteral("sieve://foo.bla.com/vacation.siv?x-mech=LOGIN"));
0164         info1.sieveUrl.setPassword(password);
0165         info1.sieveUrl.setUserName(userName);
0166         info1.sieveUrl.setPort(port);
0167         info1.sieveImapAccountSettings.setServerName(QStringLiteral("foo.bla.com"));
0168         info1.sieveImapAccountSettings.setPort(imapPort);
0169         info1.sieveImapAccountSettings.setUserName(userName);
0170         info1.sieveImapAccountSettings.setPassword(password);
0171 
0172         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::ClearText);
0173         // TODO fix encryptionmode
0174         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::SSLorTLS);
0175 
0176         QTest::newRow("sievereuseconfig2ssl") << data1 << info1 << true << true;
0177     }
0178 
0179     {
0180         const int imapPort = 53;
0181         AkonadiImapSettingInterfaceDataTest data1;
0182         data1.sieveSupport = true;
0183         data1.sieveReuseConfig = true;
0184         data1.imapServer = QStringLiteral("foo.bla.com");
0185         data1.userName = QStringLiteral("kde");
0186         data1.sievePort = 3;
0187         data1.imapPort = imapPort;
0188         data1.sieveCustomUsername = QString();
0189         data1.sieveCustomAuthentification = QString();
0190         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0191         data1.safety = QStringLiteral("STARTTLS");
0192         data1.alternateAuthentication = -1;
0193         // MailTransport::Transport::EnumAuthenticationType::PLAIN = 0
0194         data1.authentication = 0;
0195         data1.sieveAlternateUrl = QString();
0196         data1.password = QStringLiteral("password2");
0197         data1.sieveCustomPassword = QString();
0198 
0199         KSieveCore::Util::AccountInfo info1;
0200         const QString password = QStringLiteral("password2");
0201         const QString userName = QStringLiteral("kde");
0202         const int port = 3;
0203         info1.sieveUrl = QUrl::fromUserInput(QStringLiteral("sieve://foo.bla.com/vacation.siv?x-mech=LOGIN"));
0204         info1.sieveUrl.setPassword(password);
0205         info1.sieveUrl.setUserName(userName);
0206         info1.sieveUrl.setPort(port);
0207         info1.sieveImapAccountSettings.setServerName(QStringLiteral("foo.bla.com"));
0208         info1.sieveImapAccountSettings.setPort(imapPort);
0209         info1.sieveImapAccountSettings.setUserName(userName);
0210         info1.sieveImapAccountSettings.setPassword(password);
0211 
0212         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::ClearText);
0213         // TODO fix encryptionmode
0214         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::STARTTLS);
0215 
0216         QTest::newRow("sievereuseconfig2startls") << data1 << info1 << true << true;
0217     }
0218 
0219     {
0220         const int imapPort = 53;
0221         AkonadiImapSettingInterfaceDataTest data1;
0222         data1.sieveSupport = false;
0223         data1.sieveReuseConfig = true;
0224         data1.imapServer = QStringLiteral("foo.bla.com");
0225         data1.userName = QStringLiteral("kde");
0226         data1.sievePort = 3;
0227         data1.imapPort = imapPort;
0228         data1.sieveCustomUsername = QString();
0229         data1.sieveCustomAuthentification = QString();
0230         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0231         data1.safety = QStringLiteral("SAFETY");
0232         data1.alternateAuthentication = -1;
0233         // MailTransport::Transport::EnumAuthenticationType::PLAIN = 0
0234         data1.authentication = 0;
0235         data1.sieveAlternateUrl = QString();
0236         data1.password = QStringLiteral("password2");
0237         data1.sieveCustomPassword = QString();
0238 
0239         KSieveCore::Util::AccountInfo info1;
0240         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::Plain);
0241         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::Unencrypted);
0242 
0243         QTest::newRow("dontusesieve") << data1 << info1 << false << true;
0244     }
0245 
0246     {
0247         const QString sievePasswd = QStringLiteral("password3");
0248         const QString imapPasswd = QStringLiteral("password2");
0249         const QString imapUser = QStringLiteral("kde");
0250         const QString sieveUser = QStringLiteral("foo1");
0251         const int sievePort = 3;
0252         const int imapPort = 53;
0253         AkonadiImapSettingInterfaceDataTest data1;
0254         data1.sieveSupport = true;
0255         data1.sieveReuseConfig = false;
0256         data1.imapServer = QStringLiteral("foo.bla.com");
0257         data1.userName = imapUser;
0258         data1.sievePort = sievePort;
0259         data1.imapPort = imapPort;
0260         data1.sieveCustomUsername = sieveUser;
0261         data1.sieveCustomAuthentification = QStringLiteral("CustomUserPassword");
0262         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0263         data1.safety = QStringLiteral("SAFETY");
0264         data1.alternateAuthentication = 4;
0265         // MailTransport::Transport::EnumAuthenticationType::PLAIN = 0
0266         data1.authentication = 3;
0267         data1.sieveAlternateUrl = QStringLiteral("bla.bla.com");
0268         data1.password = imapPasswd;
0269         data1.sieveCustomPassword = sievePasswd;
0270 
0271         KSieveCore::Util::AccountInfo info1;
0272         info1.sieveUrl = QUrl::fromUserInput(QStringLiteral("sieve://bla.bla.com/vacation.siv?x-mech=GSSAPI"));
0273         info1.sieveUrl.setPassword(sievePasswd);
0274         info1.sieveUrl.setUserName(sieveUser);
0275         info1.sieveUrl.setPort(sievePort);
0276         info1.sieveImapAccountSettings.setServerName(QStringLiteral("foo.bla.com"));
0277         info1.sieveImapAccountSettings.setPort(imapPort);
0278         info1.sieveImapAccountSettings.setUserName(imapUser);
0279         info1.sieveImapAccountSettings.setPassword(imapPasswd);
0280 
0281         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::CramMD5);
0282 
0283         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::Unencrypted);
0284 
0285         QTest::newRow("sievereusecustomconfig1") << data1 << info1 << true << true;
0286     }
0287     {
0288         const QString sievePasswd = QStringLiteral("password3");
0289         const QString imapPasswd = QStringLiteral("password2");
0290         const QString imapUser = QStringLiteral("kde");
0291         const QString sieveUser = QStringLiteral("foo1");
0292         const int sievePort = 3;
0293         const int imapPort = 53;
0294         AkonadiImapSettingInterfaceDataTest data1;
0295         data1.sieveSupport = true;
0296         data1.sieveReuseConfig = false;
0297         data1.imapServer = QStringLiteral("foo.bla.com");
0298         data1.userName = imapUser;
0299         data1.sievePort = sievePort;
0300         data1.imapPort = imapPort;
0301         data1.sieveCustomUsername = sieveUser;
0302         data1.sieveCustomAuthentification = QStringLiteral("CustomUserPassword");
0303         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0304         data1.safety = QStringLiteral("SAFETY");
0305         data1.alternateAuthentication = 4;
0306         // MailTransport::Transport::EnumAuthenticationType::PLAIN = 0
0307         data1.authentication = 3;
0308         data1.sieveAlternateUrl = QStringLiteral("bla.bla.com");
0309         data1.password = imapPasswd;
0310         data1.sieveCustomPassword = sievePasswd;
0311 
0312         KSieveCore::Util::AccountInfo info1;
0313         info1.sieveUrl = QUrl::fromUserInput(QStringLiteral("sieve://bla.bla.com?x-mech=GSSAPI"));
0314         info1.sieveUrl.setPassword(sievePasswd);
0315         info1.sieveUrl.setUserName(sieveUser);
0316         info1.sieveUrl.setPort(sievePort);
0317         info1.sieveImapAccountSettings.setServerName(QStringLiteral("foo.bla.com"));
0318         info1.sieveImapAccountSettings.setPort(imapPort);
0319         info1.sieveImapAccountSettings.setUserName(imapUser);
0320         info1.sieveImapAccountSettings.setPassword(imapPasswd);
0321 
0322         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::CramMD5);
0323 
0324         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::Unencrypted);
0325 
0326         QTest::newRow("sievereusecustomconfig1withoutvacationfile") << data1 << info1 << true << false;
0327     }
0328 
0329     {
0330         const QString sievePasswd = QStringLiteral("password3");
0331         const QString imapPasswd = QStringLiteral("password2");
0332         const QString imapUser = QStringLiteral("kde");
0333         const QString sieveUser = QStringLiteral("foo1");
0334         const int sievePort = 3;
0335         const int imapPort = 53;
0336         AkonadiImapSettingInterfaceDataTest data1;
0337         data1.sieveSupport = true;
0338         data1.sieveReuseConfig = false;
0339         data1.imapServer = QStringLiteral("foo.bla.com");
0340         data1.userName = imapUser;
0341         data1.sievePort = sievePort;
0342         data1.imapPort = imapPort;
0343         data1.sieveCustomUsername = sieveUser;
0344         data1.sieveCustomAuthentification = QStringLiteral("CustomUserPassword");
0345         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0346         data1.safety = QStringLiteral("SSL");
0347         data1.alternateAuthentication = 4;
0348         // MailTransport::Transport::EnumAuthenticationType::PLAIN = 0
0349         data1.authentication = 3;
0350         data1.sieveAlternateUrl = QStringLiteral("bla.bla.com");
0351         data1.password = imapPasswd;
0352         data1.sieveCustomPassword = sievePasswd;
0353 
0354         KSieveCore::Util::AccountInfo info1;
0355         info1.sieveUrl = QUrl::fromUserInput(QStringLiteral("sieve://bla.bla.com?x-mech=GSSAPI"));
0356         info1.sieveUrl.setPassword(sievePasswd);
0357         info1.sieveUrl.setUserName(sieveUser);
0358         info1.sieveUrl.setPort(sievePort);
0359         info1.sieveImapAccountSettings.setServerName(QStringLiteral("foo.bla.com"));
0360         info1.sieveImapAccountSettings.setPort(imapPort);
0361         info1.sieveImapAccountSettings.setUserName(imapUser);
0362         info1.sieveImapAccountSettings.setPassword(imapPasswd);
0363 
0364         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::CramMD5);
0365 
0366         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::SSLorTLS);
0367 
0368         QTest::newRow("sievereusecustomconfig1withoutvacationfileSSL") << data1 << info1 << true << false;
0369     }
0370 
0371     {
0372         const QString sievePasswd = QStringLiteral("password3");
0373         const QString imapPasswd = QStringLiteral("password2");
0374         const QString imapUser = QStringLiteral("kde");
0375         const QString sieveUser = QStringLiteral("foo1");
0376         const int sievePort = 3;
0377         const int imapPort = 53;
0378         AkonadiImapSettingInterfaceDataTest data1;
0379         data1.sieveSupport = true;
0380         data1.sieveReuseConfig = false;
0381         data1.imapServer = QStringLiteral("foo.bla.com");
0382         data1.userName = imapUser;
0383         data1.sievePort = sievePort;
0384         data1.imapPort = imapPort;
0385         data1.sieveCustomUsername = sieveUser;
0386         data1.sieveCustomAuthentification = QStringLiteral("CustomUserPassword");
0387         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0388         data1.safety = QStringLiteral("STARTTLS");
0389         data1.alternateAuthentication = 4;
0390         // MailTransport::Transport::EnumAuthenticationType::DigestMD5 = 3
0391         data1.authentication = 3;
0392         data1.sieveAlternateUrl = QStringLiteral("bla.bla.com");
0393         data1.password = imapPasswd;
0394         data1.sieveCustomPassword = sievePasswd;
0395 
0396         KSieveCore::Util::AccountInfo info1;
0397         info1.sieveUrl = QUrl::fromUserInput(QStringLiteral("sieve://bla.bla.com?x-mech=GSSAPI"));
0398         info1.sieveUrl.setPassword(sievePasswd);
0399         info1.sieveUrl.setUserName(sieveUser);
0400         info1.sieveUrl.setPort(sievePort);
0401         info1.sieveImapAccountSettings.setServerName(QStringLiteral("foo.bla.com"));
0402         info1.sieveImapAccountSettings.setPort(imapPort);
0403         info1.sieveImapAccountSettings.setUserName(imapUser);
0404         info1.sieveImapAccountSettings.setPassword(imapPasswd);
0405 
0406         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::CramMD5);
0407 
0408         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::STARTTLS);
0409 
0410         QTest::newRow("sievereusecustomconfig1withoutvacationfileStarttls") << data1 << info1 << true << false;
0411     }
0412 
0413     {
0414         const QString sievePasswd = QStringLiteral("password3");
0415         const QString imapPasswd = QStringLiteral("password2");
0416         const QString imapUser = QStringLiteral("kde");
0417         const QString sieveUser = QStringLiteral("foo1");
0418         const int sievePort = 3;
0419         const int imapPort = 53;
0420         AkonadiImapSettingInterfaceDataTest data1;
0421         data1.sieveSupport = true;
0422         data1.sieveReuseConfig = false;
0423         data1.imapServer = QStringLiteral("foo.bla.com");
0424         data1.userName = imapUser;
0425         data1.sievePort = sievePort;
0426         data1.imapPort = imapPort;
0427         data1.sieveCustomUsername = sieveUser;
0428         data1.sieveCustomAuthentification = QStringLiteral("CustomUserPassword");
0429         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0430         data1.safety = QStringLiteral("STARTTLS");
0431         data1.alternateAuthentication = 4;
0432         // MailTransport::Transport::EnumAuthenticationType::DigestMD5 = 3
0433         data1.authentication = 4;
0434         data1.sieveAlternateUrl = QStringLiteral("bla.bla.com");
0435         data1.password = imapPasswd;
0436         data1.sieveCustomPassword = sievePasswd;
0437 
0438         KSieveCore::Util::AccountInfo info1;
0439         info1.sieveUrl = QUrl::fromUserInput(QStringLiteral("sieve://bla.bla.com?x-mech=GSSAPI"));
0440         info1.sieveUrl.setPassword(sievePasswd);
0441         info1.sieveUrl.setUserName(sieveUser);
0442         info1.sieveUrl.setPort(sievePort);
0443         info1.sieveImapAccountSettings.setServerName(QStringLiteral("foo.bla.com"));
0444         info1.sieveImapAccountSettings.setPort(imapPort);
0445         info1.sieveImapAccountSettings.setUserName(imapUser);
0446         info1.sieveImapAccountSettings.setPassword(imapPasswd);
0447 
0448         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::DigestMD5);
0449 
0450         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::STARTTLS);
0451 
0452         QTest::newRow("sievereusecustomconfig1withoutvacationfileStarttls2") << data1 << info1 << true << false;
0453     }
0454     {
0455         const QString sievePasswd = QStringLiteral("password3");
0456         const QString imapPasswd = QStringLiteral("password2");
0457         const QString imapUser = QStringLiteral("kde");
0458         const QString sieveUser = QStringLiteral("foo1");
0459         const int sievePort = 3;
0460         const int imapPort = 53;
0461         AkonadiImapSettingInterfaceDataTest data1;
0462         data1.sieveSupport = true;
0463         data1.sieveReuseConfig = false;
0464         data1.imapServer = QStringLiteral("foo.bla.com");
0465         data1.userName = imapUser;
0466         data1.sievePort = sievePort;
0467         data1.imapPort = imapPort;
0468         data1.sieveCustomUsername = sieveUser;
0469         data1.sieveCustomAuthentification = QStringLiteral("CustomUserPassword");
0470         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0471         data1.safety = QStringLiteral("STARTTLS");
0472         data1.alternateAuthentication = 4;
0473         // MailTransport::Transport::EnumAuthenticationType::DigestMD5 = 3
0474         data1.authentication = 4;
0475         data1.sieveAlternateUrl = QStringLiteral("bla.bla.com");
0476         data1.password = imapPasswd;
0477         data1.sieveCustomPassword = sievePasswd;
0478 
0479         KSieveCore::Util::AccountInfo info1;
0480         info1.sieveUrl = QUrl::fromUserInput(QStringLiteral("sieve://bla.bla.com?x-mech=GSSAPI"));
0481         info1.sieveUrl.setPassword(sievePasswd);
0482         info1.sieveUrl.setUserName(sieveUser);
0483         info1.sieveUrl.setPort(sievePort);
0484         info1.sieveImapAccountSettings.setServerName(QStringLiteral("foo.bla.com"));
0485         info1.sieveImapAccountSettings.setPort(imapPort);
0486         info1.sieveImapAccountSettings.setUserName(imapUser);
0487         info1.sieveImapAccountSettings.setPassword(imapPasswd);
0488 
0489         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::DigestMD5);
0490 
0491         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::STARTTLS);
0492 
0493         QTest::newRow("sievereusecustomconfig1withoutvacationfileStarttls3") << data1 << info1 << true << false;
0494     }
0495 
0496     {
0497         const QString sievePasswd = QStringLiteral("password3");
0498         const QString imapPasswd = QStringLiteral("password2");
0499         const QString imapUser = QStringLiteral("kde");
0500         const QString sieveUser = QStringLiteral("foo1");
0501         const int sievePort = 3;
0502         const int imapPort = 53;
0503         AkonadiImapSettingInterfaceDataTest data1;
0504         data1.sieveSupport = false;
0505         data1.sieveReuseConfig = false;
0506         data1.imapServer = QStringLiteral("foo.bla.com");
0507         data1.userName = imapUser;
0508         data1.sievePort = sievePort;
0509         data1.imapPort = imapPort;
0510         data1.sieveCustomUsername = sieveUser;
0511         data1.sieveCustomAuthentification = QStringLiteral("CustomUserPassword");
0512         data1.sieveVacationFilename = QStringLiteral("vacation.siv");
0513         data1.safety = QStringLiteral("STARTTLS");
0514         data1.alternateAuthentication = 4;
0515         // MailTransport::Transport::EnumAuthenticationType::PLAIN = 2
0516         data1.authentication = 2;
0517         data1.sieveAlternateUrl = QStringLiteral("bla.bla.com");
0518         data1.password = imapPasswd;
0519         data1.sieveCustomPassword = sievePasswd;
0520 
0521         KSieveCore::Util::AccountInfo info1;
0522         info1.sieveImapAccountSettings.setAuthenticationType(KSieveCore::SieveImapAccountSettings::Plain);
0523         info1.sieveImapAccountSettings.setEncryptionMode(KSieveCore::SieveImapAccountSettings::Unencrypted);
0524         QTest::newRow("sievereusecustomconfig1withoutvacationfileStarttlsNoSieveSupport") << data1 << info1 << false << false;
0525     }
0526 }
0527 
0528 void FindAccountInfoJobTest::shouldAssignValue()
0529 {
0530     QFETCH(AkonadiImapSettingInterfaceDataTest, data);
0531     QFETCH(KSieveCore::Util::AccountInfo, accountInfo);
0532     QFETCH(bool, sieveImapAccountValid);
0533     QFETCH(bool, useVacationFile);
0534 
0535     std::unique_ptr<KSieveCore::AbstractAkonadiImapSettingInterface> interface(new AkonadiImapSettingInterfaceTest(data));
0536     std::unique_ptr<DataImapPasswordProvider> provider(new DataImapPasswordProvider(&data));
0537 
0538     auto job = new KSieveCore::FindAccountInfoJob;
0539     job->setIdentifier(QStringLiteral("foo"));
0540     job->setProvider(provider.get());
0541     job->setCustomImapSettingsInterface(interface.get());
0542     job->setWithVacationFileName(useVacationFile);
0543     QSignalSpy spy(job, &KSieveCore::FindAccountInfoJob::findAccountInfoFinished);
0544     job->start();
0545     spy.wait(1000);
0546     QCOMPARE(spy.count(), 1);
0547     const auto info = spy.at(0).at(0).value<KSieveCore::Util::AccountInfo>();
0548     QCOMPARE(info.sieveImapAccountSettings.isValid(), sieveImapAccountValid);
0549     const bool equal = (info == accountInfo);
0550     if (!equal) {
0551         qDebug() << " info " << info;
0552         qDebug() << " accountInfo " << accountInfo;
0553     }
0554     QVERIFY(equal);
0555 }
0556 
0557 #include "moc_findaccountinfojobtest.cpp"