summaryrefslogtreecommitdiffstats
path: root/tests/teststore.cpp
diff options
context:
space:
mode:
authorRémi Nicole <nicole@kolabsystems.com>2018-03-09 13:32:10 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-03-09 13:32:24 +0100
commitd5b5c33a0cb3fbe02d011a14f2028249220b0656 (patch)
treedb0ebb30db599a6889ea6066ec33bf5f862c8444 /tests/teststore.cpp
parent93e9c10d1894797b5826bbdfcc324f4235c9e193 (diff)
downloadkube-d5b5c33a0cb3fbe02d011a14f2028249220b0656.tar.gz
kube-d5b5c33a0cb3fbe02d011a14f2028249220b0656.zip
Automatic key import / export + Expected monad
Summary: There are many things going on here (perhaps a bit much for a single patch): - When an attachment is of mime type "application/pgp-keys", a button is added to import the key to GPG - When sending a mail and crypto is enabled (encryption, signing or both), the public key of the first private key found is sent as an un-encrypted attachment (T6994) - The `mailcrypto.{h,cpp}` was, for the most part, rewritten - Introduction of the expected monad, inspired by what was proposed for C++ [here](https://isocpp.org/files/papers/n4015.pdf), but not at all a strict implementation of this specification. We may want to add some more features of this standard later. The rationale for some of the choices: - I found mailcrypto a bit hard to edit to add new features, and a great part was commented code to prepare for the support the SMIME crypto format, which would (in my current knowledge) not be used for sending emails. - One thing I found that may be missing in the code base was a standardized way of handling errors in C++ code. Since exceptions are disabled I think that the functional way is the way to go. After some research I found the Expected monad / tagged union / sum type, which seemed to suit the problem particularly well. In the long run, I hope we would move the entire code base to use `Expected` to indicate if a function might fail. Of course every choice made here is to be considered as a proposition for doing things / RFC, critics wholeheartedly accepted. Reviewers: cmollekopf Tags: #kube Maniphest Tasks: T6994, T8147, T6995 Differential Revision: https://phabricator.kde.org/D11158
Diffstat (limited to 'tests/teststore.cpp')
-rw-r--r--tests/teststore.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/teststore.cpp b/tests/teststore.cpp
index 9d56dd33..84e2da20 100644
--- a/tests/teststore.cpp
+++ b/tests/teststore.cpp
@@ -64,6 +64,19 @@ static void createMail(const QVariantMap &object, const QByteArray &folder = {})
64 auto ccAddresses = toStringList(object["cc"].toList()); 64 auto ccAddresses = toStringList(object["cc"].toList());
65 auto bccAddresses = toStringList(object["bcc"].toList()); 65 auto bccAddresses = toStringList(object["bcc"].toList());
66 66
67 QList<Attachment> attachments = {};
68 if (object.contains("attachments")) {
69 auto attachmentSpecs = object["attachments"].toList();
70 for (int i = 0; i < attachmentSpecs.size(); ++i) {
71 auto const &spec = attachmentSpecs.at(i).toMap();
72 attachments << Attachment{spec["name"].toString(),
73 spec["name"].toString(),
74 spec["mimeType"].toByteArray(),
75 false,
76 spec["data"].toByteArray()};
77 }
78 }
79
67 KMime::Types::Mailbox mb; 80 KMime::Types::Mailbox mb;
68 mb.fromUnicodeString("identity@example.org"); 81 mb.fromUnicodeString("identity@example.org");
69 auto msg = MailTemplates::createMessage({}, 82 auto msg = MailTemplates::createMessage({},
@@ -74,7 +87,7 @@ static void createMail(const QVariantMap &object, const QByteArray &folder = {})
74 object["subject"].toString(), 87 object["subject"].toString(),
75 object["body"].toString(), 88 object["body"].toString(),
76 object["bodyIsHtml"].toBool(), 89 object["bodyIsHtml"].toBool(),
77 {}, 90 attachments,
78 {}, 91 {},
79 {}); 92 {});
80 if (object.contains("messageId")) { 93 if (object.contains("messageId")) {