1 /*
2 SPDX-FileCopyrightText: 2016-2021 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "importimapsettingsakonadicheckjobtest.h"
8 #include "../checks/importimapsettingsakonadicheckjob.h"
9 #include "importimapsettingspasswordtest.h"
10
11 #include <QSignalSpy>
12 #include <QStandardPaths>
13 #include <QTest>
14
Q_DECLARE_METATYPE(SieveEditorUtil::SieveServerConfig)15 Q_DECLARE_METATYPE(SieveEditorUtil::SieveServerConfig)
16 ImportImapSettingsAkonadiCheckJobTest::ImportImapSettingsAkonadiCheckJobTest(QObject *parent)
17 : QObject(parent)
18 {
19 qRegisterMetaType<SieveEditorUtil::SieveServerConfig>();
20 }
21
~ImportImapSettingsAkonadiCheckJobTest()22 ImportImapSettingsAkonadiCheckJobTest::~ImportImapSettingsAkonadiCheckJobTest()
23 {
24 }
25
initTestCase()26 void ImportImapSettingsAkonadiCheckJobTest::initTestCase()
27 {
28 QStandardPaths::setTestModeEnabled(true);
29 }
30
shouldHaveSettingsFiles()31 void ImportImapSettingsAkonadiCheckJobTest::shouldHaveSettingsFiles()
32 {
33 qputenv("XDG_CONFIG_DIRS", QString(QLatin1String(IMPORTWIZARD_DATA_DIR) + QStringLiteral("/config/config1")).toLatin1().constData());
34 ImportImapSettingsAkonadiCheckJob job;
35 job.setImapSettingsPassword(new ImportImapSettingsPasswordTest);
36 QVERIFY(job.settingsCanBeImported());
37 }
38
shouldHaveNotSettingsFiles()39 void ImportImapSettingsAkonadiCheckJobTest::shouldHaveNotSettingsFiles()
40 {
41 qputenv("XDG_CONFIG_DIRS", QString(QLatin1String(IMPORTWIZARD_DATA_DIR) + QStringLiteral("/config/noconfig")).toLatin1().constData());
42 ImportImapSettingsAkonadiCheckJob job;
43 job.setImapSettingsPassword(new ImportImapSettingsPasswordTest);
44 QVERIFY(!job.settingsCanBeImported());
45 }
46
shouldHaveSettingsFilesImap()47 void ImportImapSettingsAkonadiCheckJobTest::shouldHaveSettingsFilesImap()
48 {
49 qputenv("XDG_CONFIG_DIRS", QString(QLatin1String(IMPORTWIZARD_DATA_DIR) + QStringLiteral("/config/config2")).toLatin1().constData());
50 ImportImapSettingsAkonadiCheckJob job;
51 job.setImapSettingsPassword(new ImportImapSettingsPasswordTest);
52 QVERIFY(job.settingsCanBeImported());
53 }
54
shouldHaveSettingsFilesMbox()55 void ImportImapSettingsAkonadiCheckJobTest::shouldHaveSettingsFilesMbox()
56 {
57 qputenv("XDG_CONFIG_DIRS", QString(QLatin1String(IMPORTWIZARD_DATA_DIR) + QStringLiteral("/config/config3")).toLatin1().constData());
58 ImportImapSettingsAkonadiCheckJob job;
59 job.setImapSettingsPassword(new ImportImapSettingsPasswordTest);
60 QVERIFY(!job.settingsCanBeImported());
61 }
62
shouldHaveImportSettings_data()63 void ImportImapSettingsAkonadiCheckJobTest::shouldHaveImportSettings_data()
64 {
65 QTest::addColumn<QString>("directory");
66 QTest::addColumn<int>("nbsignals");
67 QTest::addColumn<int>("nbSignalsNoSettingsFound");
68 QTest::newRow("reuseconfig") << QStringLiteral("/config/reuseconfig") << 1 << 0;
69 QTest::newRow("reuseconfigtwiceconfig") << QStringLiteral("/config/reuseconfigtwiceconfig") << 2 << 0;
70
71 QTest::newRow("imapconfig") << QStringLiteral("/config/imapconfig") << 0 << 1;
72 QTest::newRow("imapconfigwithsieveconfig") << QStringLiteral("/config/imapconfigwithsieveconfig") << 1 << 0;
73 }
74
shouldHaveImportSettings()75 void ImportImapSettingsAkonadiCheckJobTest::shouldHaveImportSettings()
76 {
77 QFETCH(QString, directory);
78 QFETCH(int, nbsignals);
79 QFETCH(int, nbSignalsNoSettingsFound);
80 qputenv("XDG_CONFIG_DIRS", QString(QLatin1String(IMPORTWIZARD_DATA_DIR) + directory).toLatin1().constData());
81 ImportImapSettingsAkonadiCheckJob job;
82 job.setImapSettingsPassword(new ImportImapSettingsPasswordTest);
83 QVERIFY(job.settingsCanBeImported());
84 QSignalSpy spy(&job, &ImportImapSettingsAkonadiCheckJob::importSetting);
85 QSignalSpy spy2(&job, &ImportImapSettingsAkonadiCheckJob::noSettingsImported);
86
87 job.start();
88 QCOMPARE(spy.count(), nbsignals);
89 QCOMPARE(spy2.count(), nbSignalsNoSettingsFound);
90 }
91
shouldImportSieveSettings_data()92 void ImportImapSettingsAkonadiCheckJobTest::shouldImportSieveSettings_data()
93 {
94 QTest::addColumn<QString>("directory");
95 QTest::addColumn<QString>("name");
96 QTest::addColumn<SieveEditorUtil::SieveServerConfig>("settings");
97
98 SieveEditorUtil::SieveServerConfig settings;
99 settings.sieveImapAccountSettings.setUserName(QStringLiteral("foo@foo.com"));
100 settings.sieveImapAccountSettings.setServerName(QStringLiteral("bla.foo.com"));
101 settings.sieveImapAccountSettings.setPort(143);
102 settings.sieveImapAccountSettings.setPassword(QStringLiteral("password_imap"));
103 settings.sieveImapAccountSettings.setEncryptionMode(KSieveUi::SieveImapAccountSettings::EncryptionMode::STARTTLS);
104
105 settings.sieveSettings.userName = QStringLiteral("foo@foo.com");
106 settings.sieveSettings.serverName = QStringLiteral("bla.foo.com");
107 settings.sieveSettings.password = QStringLiteral("password_imap");
108 settings.sieveSettings.port = 4190;
109
110 QTest::newRow("reuseconfig") << QStringLiteral("/config/reuseconfig") << QStringLiteral("akonadi_kolab_resource_0rc") << settings;
111
112 SieveEditorUtil::SieveServerConfig settings2;
113 settings2.sieveImapAccountSettings.setUserName(QStringLiteral("foo@foo.com"));
114 settings2.sieveImapAccountSettings.setServerName(QStringLiteral("bla.foo.com"));
115 settings2.sieveImapAccountSettings.setPort(143);
116 settings2.sieveImapAccountSettings.setPassword(QStringLiteral("password_imap"));
117 settings2.sieveImapAccountSettings.setEncryptionMode(KSieveUi::SieveImapAccountSettings::EncryptionMode::STARTTLS);
118 settings2.sieveSettings.userName = QStringLiteral("b");
119 settings2.sieveSettings.serverName = QStringLiteral("bla.foo.com"); // TODO
120 settings2.sieveSettings.password = QStringLiteral("password_custom_sieve_imap");
121 settings2.sieveSettings.port = 150;
122
123 QTest::newRow("usecustomsieveconfig") << QStringLiteral("/config/usecustomsieveconfig") << QStringLiteral("akonadi_kolab_resource_0rc") << settings2;
124
125 SieveEditorUtil::SieveServerConfig settings3;
126 settings3.sieveImapAccountSettings.setUserName(QStringLiteral("foo@foo.com"));
127 settings3.sieveImapAccountSettings.setServerName(QStringLiteral("bla.foo.com"));
128 settings3.sieveImapAccountSettings.setPort(143);
129 settings3.sieveImapAccountSettings.setAuthenticationType(static_cast<KSieveUi::SieveImapAccountSettings::AuthenticationMode>(3));
130 settings3.sieveImapAccountSettings.setEncryptionMode(KSieveUi::SieveImapAccountSettings::EncryptionMode::Unencrypted);
131 settings3.sieveImapAccountSettings.setPassword(QStringLiteral("password_imap"));
132 settings3.sieveSettings.userName = QStringLiteral("b");
133 settings3.sieveSettings.password = QStringLiteral("password_custom_sieve_imap");
134 settings3.sieveSettings.serverName = QStringLiteral("bla.foo.com"); // TODO
135 settings3.sieveSettings.port = 150;
136
137 QTest::newRow("usecustomsieveconfig2") << QStringLiteral("/config/usecustomsieveconfig2") << QStringLiteral("akonadi_kolab_resource_0rc") << settings3;
138
139 SieveEditorUtil::SieveServerConfig settings4;
140 settings4.sieveImapAccountSettings.setUserName(QStringLiteral("foo@foo.com"));
141 settings4.sieveImapAccountSettings.setServerName(QStringLiteral("bla.foo.com"));
142 settings4.sieveImapAccountSettings.setPort(143);
143 settings4.sieveImapAccountSettings.setAuthenticationType(static_cast<KSieveUi::SieveImapAccountSettings::AuthenticationMode>(3));
144 settings4.sieveImapAccountSettings.setEncryptionMode(KSieveUi::SieveImapAccountSettings::EncryptionMode::STARTTLS);
145 settings4.sieveImapAccountSettings.setPassword(QStringLiteral("password_imap"));
146 settings4.sieveSettings.userName = QStringLiteral("b");
147 settings4.sieveSettings.password = QStringLiteral("password_custom_sieve_imap");
148 settings4.sieveSettings.serverName = QStringLiteral("bla.foo.com"); // TODO
149 settings4.sieveSettings.port = 150;
150
151 QTest::newRow("usecustomsieveconfig3") << QStringLiteral("/config/usecustomsieveconfig3") << QStringLiteral("akonadi_kolab_resource_0rc") << settings4;
152
153 SieveEditorUtil::SieveServerConfig settings5;
154 settings5.sieveImapAccountSettings.setUserName(QStringLiteral("foo@foo.com"));
155 settings5.sieveImapAccountSettings.setServerName(QStringLiteral("bla.foo.com"));
156 settings5.sieveImapAccountSettings.setPort(143);
157 settings5.sieveImapAccountSettings.setAuthenticationType(static_cast<KSieveUi::SieveImapAccountSettings::AuthenticationMode>(3));
158 settings5.sieveImapAccountSettings.setEncryptionMode(KSieveUi::SieveImapAccountSettings::EncryptionMode::SSLorTLS);
159 settings5.sieveImapAccountSettings.setPassword(QStringLiteral("password_imap"));
160 settings5.sieveSettings.userName = QStringLiteral("b");
161 settings5.sieveSettings.serverName = QStringLiteral("bla.foo.com"); // TODO
162 settings5.sieveSettings.password = QStringLiteral("password_custom_sieve_imap");
163 settings5.sieveSettings.port = 150;
164
165 QTest::newRow("usecustomsieveconfig4") << QStringLiteral("/config/usecustomsieveconfig4") << QStringLiteral("akonadi_kolab_resource_0rc") << settings5;
166 }
167
shouldImportSieveSettings()168 void ImportImapSettingsAkonadiCheckJobTest::shouldImportSieveSettings()
169 {
170 QFETCH(QString, directory);
171 QFETCH(QString, name);
172 QFETCH(SieveEditorUtil::SieveServerConfig, settings);
173 qputenv("XDG_CONFIG_DIRS", QString(QLatin1String(IMPORTWIZARD_DATA_DIR) + directory).toLatin1().constData());
174 ImportImapSettingsAkonadiCheckJob job;
175 job.setImapSettingsPassword(new ImportImapSettingsPasswordTest);
176 QVERIFY(job.settingsCanBeImported());
177 QSignalSpy spy(&job, &ImportImapSettingsAkonadiCheckJob::importSetting);
178 job.start();
179 QCOMPARE(spy.count(), 1);
180 QCOMPARE(spy.at(0).at(0).toString(), name);
181 auto importSettings = spy.at(0).at(1).value<SieveEditorUtil::SieveServerConfig>();
182 QCOMPARE(importSettings, settings);
183 }
184
185 QTEST_MAIN(ImportImapSettingsAkonadiCheckJobTest)
186