summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-08-23 21:39:06 -0600
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-08-23 21:39:06 -0600
commit6b80d971b16f81a71fdb583ef796feafa782c20c (patch)
tree02f26f6352b7791033d31f23693a982b3565fa64
parent9efd56c64fe848b4557dccbdac244571d97bfc77 (diff)
downloadkube-6b80d971b16f81a71fdb583ef796feafa782c20c.tar.gz
kube-6b80d971b16f81a71fdb583ef796feafa782c20c.zip
Fully tested the account settings
* Fixed account and davresource loading. * Use resource type instead of capabilities for loading of the resource.
-rw-r--r--framework/src/domain/settings/accountsettings.cpp31
-rw-r--r--framework/src/domain/settings/accountsettings.h4
-rw-r--r--framework/src/domain/settings/tests/settingstest.cpp50
3 files changed, 67 insertions, 18 deletions
diff --git a/framework/src/domain/settings/accountsettings.cpp b/framework/src/domain/settings/accountsettings.cpp
index 9f2bcd12..232f7aba 100644
--- a/framework/src/domain/settings/accountsettings.cpp
+++ b/framework/src/domain/settings/accountsettings.cpp
@@ -61,10 +61,12 @@ void AccountSettings::setAccountIdentifier(const QByteArray &id)
61 mCardDavServer = QString(); 61 mCardDavServer = QString();
62 mCardDavUsername = QString(); 62 mCardDavUsername = QString();
63 mCardDavPassword = QString(); 63 mCardDavPassword = QString();
64 mPath = QString();
64 emit changed(); 65 emit changed();
65 emit imapResourceChanged(); 66 emit imapResourceChanged();
66 emit smtpResourceChanged(); 67 emit smtpResourceChanged();
67 emit cardDavResourceChanged(); 68 emit cardDavResourceChanged();
69 emit pathChanged();
68 70
69 load(); 71 load();
70 72
@@ -158,7 +160,7 @@ void AccountSettings::saveAccount()
158 }) 160 })
159 .exec().waitForFinished(); 161 .exec().waitForFinished();
160 } else { 162 } else {
161 qDebug() << "Saving account " << mAccountIdentifier << mMailtransportIdentifier; 163 qDebug() << "Saving account " << mAccountIdentifier;
162 Q_ASSERT(!mAccountIdentifier.isEmpty()); 164 Q_ASSERT(!mAccountIdentifier.isEmpty());
163 SinkAccount account(mAccountIdentifier); 165 SinkAccount account(mAccountIdentifier);
164 account.setAccountType(mAccountType); 166 account.setAccountType(mAccountType);
@@ -182,12 +184,14 @@ void AccountSettings::loadAccount()
182 mIcon = account.getIcon(); 184 mIcon = account.getIcon();
183 mName = account.getName(); 185 mName = account.getName();
184 emit changed(); 186 emit changed();
187 }).onError([](const KAsync::Error &error) {
188 qWarning() << "Failed to load the account: " << error.errorMessage;
185 }).exec().waitForFinished(); 189 }).exec().waitForFinished();
186} 190}
187 191
188void AccountSettings::loadImapResource() 192void AccountSettings::loadImapResource()
189{ 193{
190 Store::fetchOne<SinkResource>(Query().filter<SinkResource::Account>(mAccountIdentifier).containsFilter<SinkResource::Capabilities>(ResourceCapabilities::Mail::storage)) 194 Store::fetchOne<SinkResource>(Query().filter<SinkResource::Account>(mAccountIdentifier).filter<SinkResource::ResourceType>("sink.imap"))
191 .then([this](const SinkResource &resource) { 195 .then([this](const SinkResource &resource) {
192 mImapIdentifier = resource.identifier(); 196 mImapIdentifier = resource.identifier();
193 mImapServer = resource.getProperty("server").toString(); 197 mImapServer = resource.getProperty("server").toString();
@@ -195,28 +199,25 @@ void AccountSettings::loadImapResource()
195 mImapPassword = resource.getProperty("password").toString(); 199 mImapPassword = resource.getProperty("password").toString();
196 emit imapResourceChanged(); 200 emit imapResourceChanged();
197 }).onError([](const KAsync::Error &error) { 201 }).onError([](const KAsync::Error &error) {
198 qWarning() << "Failed to find the imap resource: " << error.errorMessage; 202 qWarning() << "Failed to load the imap resource: " << error.errorMessage;
199 }).exec().waitForFinished(); 203 }).exec().waitForFinished();
200} 204}
201 205
202void AccountSettings::loadMaildirResource() 206void AccountSettings::loadMaildirResource()
203{ 207{
204 Store::fetchOne<SinkResource>(Query().filter<SinkResource::Account>(mAccountIdentifier).containsFilter<SinkResource::Capabilities>(ResourceCapabilities::Mail::storage)) 208 Store::fetchOne<SinkResource>(Query().filter<SinkResource::Account>(mAccountIdentifier).filter<SinkResource::ResourceType>("sink.maildir"))
205 .then([this](const SinkResource &resource) { 209 .then([this](const SinkResource &resource) {
206 mMaildirIdentifier = resource.identifier(); 210 mMaildirIdentifier = resource.identifier();
207 auto path = resource.getProperty("path").toString(); 211 mPath = resource.getProperty("path").toString();
208 if (mPath != path) { 212 emit pathChanged();
209 mPath = path;
210 emit pathChanged();
211 }
212 }).onError([](const KAsync::Error &error) { 213 }).onError([](const KAsync::Error &error) {
213 SinkWarning() << "Failed to find the maildir resource: " << error.errorMessage; 214 SinkWarning() << "Failed to load the maildir resource: " << error.errorMessage;
214 }).exec().waitForFinished(); 215 }).exec().waitForFinished();
215} 216}
216 217
217void AccountSettings::loadMailtransportResource() 218void AccountSettings::loadMailtransportResource()
218{ 219{
219 Store::fetchOne<SinkResource>(Query().filter<SinkResource::Account>(mAccountIdentifier).containsFilter<SinkResource::Capabilities>(ResourceCapabilities::Mail::transport)) 220 Store::fetchOne<SinkResource>(Query().filter<SinkResource::Account>(mAccountIdentifier).filter<SinkResource::ResourceType>("sink.mailtransport"))
220 .then([this](const SinkResource &resource) { 221 .then([this](const SinkResource &resource) {
221 mMailtransportIdentifier = resource.identifier(); 222 mMailtransportIdentifier = resource.identifier();
222 mSmtpServer = resource.getProperty("server").toString(); 223 mSmtpServer = resource.getProperty("server").toString();
@@ -224,7 +225,7 @@ void AccountSettings::loadMailtransportResource()
224 mSmtpPassword = resource.getProperty("password").toString(); 225 mSmtpPassword = resource.getProperty("password").toString();
225 emit smtpResourceChanged(); 226 emit smtpResourceChanged();
226 }).onError([](const KAsync::Error &error) { 227 }).onError([](const KAsync::Error &error) {
227 SinkWarning() << "Failed to find the smtp resource: " << error.errorMessage; 228 SinkWarning() << "Failed to load the smtp resource: " << error.errorMessage;
228 }).exec().waitForFinished(); 229 }).exec().waitForFinished();
229} 230}
230 231
@@ -238,13 +239,13 @@ void AccountSettings::loadIdentity()
238 mEmailAddress = identity.getAddress(); 239 mEmailAddress = identity.getAddress();
239 emit identityChanged(); 240 emit identityChanged();
240 }).onError([](const KAsync::Error &error) { 241 }).onError([](const KAsync::Error &error) {
241 SinkWarning() << "Failed to find the identity resource: " << error.errorMessage; 242 SinkWarning() << "Failed to load the identity: " << error.errorMessage;
242 }).exec().waitForFinished(); 243 }).exec().waitForFinished();
243} 244}
244 245
245void AccountSettings::loadCardDavResource() 246void AccountSettings::loadCardDavResource()
246{ 247{
247 Store::fetchOne<SinkResource>(Query().filter<SinkResource::Account>(mAccountIdentifier).containsFilter<SinkResource::Capabilities>(ResourceCapabilities::Contact::storage)) 248 Store::fetchOne<SinkResource>(Query().filter<SinkResource::Account>(mAccountIdentifier).filter<SinkResource::ResourceType>("sink.dav"))
248 .then([this](const SinkResource &resource) { 249 .then([this](const SinkResource &resource) {
249 mCardDavIdentifier = resource.identifier(); 250 mCardDavIdentifier = resource.identifier();
250 mCardDavServer = resource.getProperty("server").toString(); 251 mCardDavServer = resource.getProperty("server").toString();
@@ -252,7 +253,7 @@ void AccountSettings::loadCardDavResource()
252 mCardDavPassword = resource.getProperty("password").toString(); 253 mCardDavPassword = resource.getProperty("password").toString();
253 emit cardDavResourceChanged(); 254 emit cardDavResourceChanged();
254 }).onError([](const KAsync::Error &error) { 255 }).onError([](const KAsync::Error &error) {
255 qWarning() << "Failed to find the CardDAV resource: " << error.errorMessage; 256 qWarning() << "Failed to load the CardDAV resource: " << error.errorMessage;
256 }).exec().waitForFinished(); 257 }).exec().waitForFinished();
257} 258}
258 259
diff --git a/framework/src/domain/settings/accountsettings.h b/framework/src/domain/settings/accountsettings.h
index 077b7784..79fc5f72 100644
--- a/framework/src/domain/settings/accountsettings.h
+++ b/framework/src/domain/settings/accountsettings.h
@@ -42,6 +42,10 @@ class AccountSettings : public QObject
42 Q_PROPERTY(QString smtpUsername MEMBER mSmtpUsername NOTIFY smtpResourceChanged) 42 Q_PROPERTY(QString smtpUsername MEMBER mSmtpUsername NOTIFY smtpResourceChanged)
43 Q_PROPERTY(QString smtpPassword MEMBER mSmtpPassword NOTIFY smtpResourceChanged) 43 Q_PROPERTY(QString smtpPassword MEMBER mSmtpPassword NOTIFY smtpResourceChanged)
44 44
45 Q_PROPERTY(QString carddavServer MEMBER mCardDavServer NOTIFY cardDavResourceChanged)
46 Q_PROPERTY(QString carddavUsername MEMBER mCardDavUsername NOTIFY cardDavResourceChanged)
47 Q_PROPERTY(QString carddavPassword MEMBER mCardDavPassword NOTIFY cardDavResourceChanged)
48
45 Q_PROPERTY(QUrl path READ path WRITE setPath NOTIFY pathChanged) 49 Q_PROPERTY(QUrl path READ path WRITE setPath NOTIFY pathChanged)
46 Q_PROPERTY(QValidator* pathValidator READ pathValidator CONSTANT) 50 Q_PROPERTY(QValidator* pathValidator READ pathValidator CONSTANT)
47 51
diff --git a/framework/src/domain/settings/tests/settingstest.cpp b/framework/src/domain/settings/tests/settingstest.cpp
index 2d997468..3b8ae69b 100644
--- a/framework/src/domain/settings/tests/settingstest.cpp
+++ b/framework/src/domain/settings/tests/settingstest.cpp
@@ -24,6 +24,8 @@ public:
24 loadAccount(); 24 loadAccount();
25 loadImapResource(); 25 loadImapResource();
26 loadMailtransportResource(); 26 loadMailtransportResource();
27 loadMaildirResource();
28 loadCardDavResource();
27 loadIdentity(); 29 loadIdentity();
28 } 30 }
29 31
@@ -32,6 +34,8 @@ public:
32 saveAccount(); 34 saveAccount();
33 saveImapResource(); 35 saveImapResource();
34 saveMailtransportResource(); 36 saveMailtransportResource();
37 saveMaildirResource();
38 saveCardDavResource();
35 saveIdentity(); 39 saveIdentity();
36 } 40 }
37 41
@@ -39,6 +43,8 @@ public:
39 { 43 {
40 removeResource(mMailtransportIdentifier); 44 removeResource(mMailtransportIdentifier);
41 removeResource(mImapIdentifier); 45 removeResource(mImapIdentifier);
46 removeResource(mMaildirIdentifier);
47 removeResource(mCardDavIdentifier);
42 removeIdentity(); 48 removeIdentity();
43 removeAccount(); 49 removeAccount();
44 } 50 }
@@ -56,7 +62,6 @@ private slots:
56 62
57 void testLoad() 63 void testLoad()
58 { 64 {
59 auto accountId = "accountid";
60 auto imapServer = QString("imapserver"); 65 auto imapServer = QString("imapserver");
61 auto imapUsername = QString("imapName"); 66 auto imapUsername = QString("imapName");
62 auto imapPassword = QString("imapPw"); 67 auto imapPassword = QString("imapPw");
@@ -65,21 +70,33 @@ private slots:
65 auto smtpPassword = QString("smtpPw"); 70 auto smtpPassword = QString("smtpPw");
66 auto username = QString("username"); 71 auto username = QString("username");
67 auto emailAddress = QString("emailAddress"); 72 auto emailAddress = QString("emailAddress");
73 auto path = QString("path");
74 auto accountName = QString("accountName");
75 auto carddavServer = QString("carddavServer");
76 auto carddavUsername = QString("carddavUsername");
77 auto carddavPassword = QString("carddavPassword");
68 78
69 TestSettings settings; 79 TestSettings settings;
70 settings.setAccountIdentifier(accountId); 80 settings.setProperty("accountType", "test");
81 settings.setProperty("accountName", accountName);
71 settings.setProperty("imapServer", imapServer); 82 settings.setProperty("imapServer", imapServer);
72 settings.setProperty("imapUsername", imapUsername); 83 settings.setProperty("imapUsername", imapUsername);
73 settings.setProperty("imapPassword", imapPassword); 84 settings.setProperty("imapPassword", imapPassword);
74 settings.setProperty("smtpServer", smtpServer); 85 settings.setProperty("smtpServer", smtpServer);
75 settings.setProperty("smtpUsername", smtpUsername); 86 settings.setProperty("smtpUsername", smtpUsername);
76 settings.setProperty("smtpPassword", smtpPassword); 87 settings.setProperty("smtpPassword", smtpPassword);
88 settings.setProperty("carddavServer", carddavServer);
89 settings.setProperty("carddavUsername", carddavUsername);
90 settings.setProperty("carddavPassword", carddavPassword);
91 settings.setProperty("path", path);
77 settings.setProperty("userName", username); 92 settings.setProperty("userName", username);
78 settings.setProperty("emailAddress", emailAddress); 93 settings.setProperty("emailAddress", emailAddress);
79 settings.save(); 94 settings.save();
80 95
96 auto accountId = settings.accountIdentifier();
97
81 Sink::Store::fetchAll<Sink::ApplicationDomain::SinkResource>(Sink::Query()).then([](const QList<Sink::ApplicationDomain::SinkResource::Ptr> &resources) { 98 Sink::Store::fetchAll<Sink::ApplicationDomain::SinkResource>(Sink::Query()).then([](const QList<Sink::ApplicationDomain::SinkResource::Ptr> &resources) {
82 QCOMPARE(resources.size(), 2); 99 QCOMPARE(resources.size(), 4);
83 }) 100 })
84 .exec().waitForFinished(); 101 .exec().waitForFinished();
85 102
@@ -88,29 +105,45 @@ private slots:
88 TestSettings readSettings; 105 TestSettings readSettings;
89 QSignalSpy spy(&readSettings, &TestSettings::imapResourceChanged); 106 QSignalSpy spy(&readSettings, &TestSettings::imapResourceChanged);
90 QSignalSpy spy1(&readSettings, &TestSettings::smtpResourceChanged); 107 QSignalSpy spy1(&readSettings, &TestSettings::smtpResourceChanged);
108 QSignalSpy spy2(&readSettings, &TestSettings::cardDavResourceChanged);
109 QSignalSpy spy3(&readSettings, &TestSettings::changed);
110 QSignalSpy spy4(&readSettings, &TestSettings::pathChanged);
91 readSettings.setAccountIdentifier(accountId); 111 readSettings.setAccountIdentifier(accountId);
92 //Once for clear and once for the new setting 112 //Once for clear and once for the new setting
93 QTRY_COMPARE(spy.count(), 2); 113 QTRY_COMPARE(spy.count(), 2);
94 QTRY_COMPARE(spy1.count(), 2); 114 QTRY_COMPARE(spy1.count(), 2);
115 QTRY_COMPARE(spy2.count(), 2);
116 QTRY_COMPARE(spy3.count(), 2);
117 QTRY_COMPARE(spy4.count(), 2);
95 QVERIFY(!readSettings.accountIdentifier().isEmpty()); 118 QVERIFY(!readSettings.accountIdentifier().isEmpty());
119 QCOMPARE(readSettings.property("accountName").toString(), accountName);
96 QCOMPARE(readSettings.property("imapServer").toString(), imapServer); 120 QCOMPARE(readSettings.property("imapServer").toString(), imapServer);
97 QCOMPARE(readSettings.property("imapUsername").toString(), imapUsername); 121 QCOMPARE(readSettings.property("imapUsername").toString(), imapUsername);
98 QCOMPARE(readSettings.property("imapPassword").toString(), imapPassword); 122 QCOMPARE(readSettings.property("imapPassword").toString(), imapPassword);
99 QCOMPARE(readSettings.property("smtpServer").toString(), smtpServer); 123 QCOMPARE(readSettings.property("smtpServer").toString(), smtpServer);
100 QCOMPARE(readSettings.property("smtpUsername").toString(), smtpUsername); 124 QCOMPARE(readSettings.property("smtpUsername").toString(), smtpUsername);
101 QCOMPARE(readSettings.property("smtpPassword").toString(), smtpPassword); 125 QCOMPARE(readSettings.property("smtpPassword").toString(), smtpPassword);
126 QCOMPARE(readSettings.property("carddavServer").toString(), carddavServer);
127 QCOMPARE(readSettings.property("carddavUsername").toString(), carddavUsername);
128 QCOMPARE(readSettings.property("carddavPassword").toString(), carddavPassword);
129 QCOMPARE(readSettings.property("path").toString(), path);
102 QCOMPARE(readSettings.property("userName").toString(), username); 130 QCOMPARE(readSettings.property("userName").toString(), username);
103 QCOMPARE(readSettings.property("emailAddress").toString(), emailAddress); 131 QCOMPARE(readSettings.property("emailAddress").toString(), emailAddress);
104 } 132 }
105 133
106 //Modify all settings 134 //Modify all settings
107 { 135 {
136 settings.setProperty("accountName", accountName + "mod");
108 settings.setProperty("imapServer", imapServer + "mod"); 137 settings.setProperty("imapServer", imapServer + "mod");
109 settings.setProperty("imapUsername", imapUsername + "mod"); 138 settings.setProperty("imapUsername", imapUsername + "mod");
110 settings.setProperty("imapPassword", imapPassword + "mod"); 139 settings.setProperty("imapPassword", imapPassword + "mod");
111 settings.setProperty("smtpServer", smtpServer + "mod"); 140 settings.setProperty("smtpServer", smtpServer + "mod");
112 settings.setProperty("smtpUsername", smtpUsername + "mod"); 141 settings.setProperty("smtpUsername", smtpUsername + "mod");
113 settings.setProperty("smtpPassword", smtpPassword + "mod"); 142 settings.setProperty("smtpPassword", smtpPassword + "mod");
143 settings.setProperty("carddavServer", carddavServer + "mod");
144 settings.setProperty("carddavUsername", carddavUsername + "mod");
145 settings.setProperty("carddavPassword", carddavPassword + "mod");
146 settings.setProperty("path", path + "mod");
114 settings.setProperty("userName", username + "mod"); 147 settings.setProperty("userName", username + "mod");
115 settings.setProperty("emailAddress", emailAddress + "mod"); 148 settings.setProperty("emailAddress", emailAddress + "mod");
116 settings.save(); 149 settings.save();
@@ -121,17 +154,28 @@ private slots:
121 TestSettings readSettings; 154 TestSettings readSettings;
122 QSignalSpy spy(&readSettings, &TestSettings::imapResourceChanged); 155 QSignalSpy spy(&readSettings, &TestSettings::imapResourceChanged);
123 QSignalSpy spy1(&readSettings, &TestSettings::smtpResourceChanged); 156 QSignalSpy spy1(&readSettings, &TestSettings::smtpResourceChanged);
157 QSignalSpy spy2(&readSettings, &TestSettings::cardDavResourceChanged);
158 QSignalSpy spy3(&readSettings, &TestSettings::changed);
159 QSignalSpy spy4(&readSettings, &TestSettings::pathChanged);
124 readSettings.setAccountIdentifier(accountId); 160 readSettings.setAccountIdentifier(accountId);
125 //Once for clear and once for the new setting 161 //Once for clear and once for the new setting
126 QTRY_COMPARE(spy.count(), 2); 162 QTRY_COMPARE(spy.count(), 2);
127 QTRY_COMPARE(spy1.count(), 2); 163 QTRY_COMPARE(spy1.count(), 2);
164 QTRY_COMPARE(spy2.count(), 2);
165 QTRY_COMPARE(spy3.count(), 2);
166 QTRY_COMPARE(spy4.count(), 2);
128 QVERIFY(!readSettings.accountIdentifier().isEmpty()); 167 QVERIFY(!readSettings.accountIdentifier().isEmpty());
168 QCOMPARE(readSettings.property("accountName").toString(), accountName + "mod");
129 QCOMPARE(readSettings.property("imapServer").toString(), imapServer + "mod"); 169 QCOMPARE(readSettings.property("imapServer").toString(), imapServer + "mod");
130 QCOMPARE(readSettings.property("imapUsername").toString(), imapUsername + "mod"); 170 QCOMPARE(readSettings.property("imapUsername").toString(), imapUsername + "mod");
131 QCOMPARE(readSettings.property("imapPassword").toString(), imapPassword + "mod"); 171 QCOMPARE(readSettings.property("imapPassword").toString(), imapPassword + "mod");
132 QCOMPARE(readSettings.property("smtpServer").toString(), smtpServer + "mod"); 172 QCOMPARE(readSettings.property("smtpServer").toString(), smtpServer + "mod");
133 QCOMPARE(readSettings.property("smtpUsername").toString(), smtpUsername + "mod"); 173 QCOMPARE(readSettings.property("smtpUsername").toString(), smtpUsername + "mod");
134 QCOMPARE(readSettings.property("smtpPassword").toString(), smtpPassword + "mod"); 174 QCOMPARE(readSettings.property("smtpPassword").toString(), smtpPassword + "mod");
175 QCOMPARE(readSettings.property("carddavServer").toString(), carddavServer + "mod");
176 QCOMPARE(readSettings.property("carddavUsername").toString(), carddavUsername + "mod");
177 QCOMPARE(readSettings.property("carddavPassword").toString(), carddavPassword + "mod");
178 QCOMPARE(readSettings.property("path").toString(), path + "mod");
135 QCOMPARE(readSettings.property("userName").toString(), username + "mod"); 179 QCOMPARE(readSettings.property("userName").toString(), username + "mod");
136 QCOMPARE(readSettings.property("emailAddress").toString(), emailAddress + "mod"); 180 QCOMPARE(readSettings.property("emailAddress").toString(), emailAddress + "mod");
137 } 181 }