• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

mailcommon

  • sources
  • kde-4.14
  • kdepim
  • mailcommon
  • filter
  • autotests
filteractionrewriteheadertest.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2015 Montel Laurent <montel@kde.org>
3 
4  This program is free software; you can redistribute it and/or modify it
5  under the terms of the GNU General Public License, version 2, as
6  published by the Free Software Foundation.
7 
8  This program is distributed in the hope that it will be useful, but
9  WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License along
14  with this program; if not, write to the Free Software Foundation, Inc.,
15  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17 
18 #include "filteractionrewriteheadertest.h"
19 #include "../filteractions/filteractionrewriteheader.h"
20 #include <KLineEdit>
21 #include <QLabel>
22 #include <QWidget>
23 #include <qtest_kde.h>
24 #include <widgets/minimumcombobox.h>
25 #include <widgets/regexplineedit.h>
26 FilterActionRewriteHeaderTest::FilterActionRewriteHeaderTest(QObject *parent)
27  : QObject(parent)
28 {
29 
30 }
31 
32 FilterActionRewriteHeaderTest::~FilterActionRewriteHeaderTest()
33 {
34 
35 }
36 
37 void FilterActionRewriteHeaderTest::shouldHaveDefaultValue()
38 {
39  MailCommon::FilterActionRewriteHeader filter;
40  QWidget *w = filter.createParamWidget(0);
41  PimCommon::MinimumComboBox *combo = w->findChild<PimCommon::MinimumComboBox *>(QLatin1String("combo"));
42  QVERIFY(combo);
43  QVERIFY(combo->count() > 0);
44 
45  QLabel *label = w->findChild<QLabel *>(QLatin1String("label_replace"));
46  QVERIFY(label);
47 
48  MailCommon::RegExpLineEdit *regExpLineEdit = w->findChild<MailCommon::RegExpLineEdit *>(QLatin1String("search") );
49  QVERIFY(regExpLineEdit);
50  QVERIFY(regExpLineEdit->text().isEmpty());
51 
52  label = w->findChild<QLabel *>(QLatin1String("label_with"));
53  QVERIFY(label);
54 
55  KLineEdit *lineEdit = w->findChild<KLineEdit *>(QLatin1String("replace") );
56  QVERIFY(lineEdit);
57  QVERIFY(lineEdit->text().isEmpty());
58 }
59 
60 void FilterActionRewriteHeaderTest::shouldBeEmpty()
61 {
62  MailCommon::FilterActionRewriteHeader filter;
63  QVERIFY(filter.isEmpty());
64  filter.argsFromString(QLatin1String("foo\tbla"));
65  QVERIFY(filter.isEmpty());
66  filter.argsFromString(QLatin1String("foo\tbla\tkde"));
67  QVERIFY(!filter.isEmpty());
68 }
69 
70 void FilterActionRewriteHeaderTest::shouldNotExecuteActionWhenParameterIsEmpty()
71 {
72  MailCommon::FilterActionRewriteHeader filter(this);
73  KMime::Message::Ptr msgPtr = KMime::Message::Ptr(new KMime::Message());
74  Akonadi::Item item;
75  item.setPayload<KMime::Message::Ptr>(msgPtr);
76  MailCommon::ItemContext context(item, true);
77 
78  filter.argsFromString("");
79  QCOMPARE(filter.process(context, false), MailCommon::FilterAction::ErrorButGoOn);
80  QCOMPARE(context.needsPayloadStore(), false);
81 }
82 
83 void FilterActionRewriteHeaderTest::shouldNotExecuteActionWhenValueIsEmpty()
84 {
85  MailCommon::FilterActionRewriteHeader filter(this);
86  KMime::Message::Ptr msgPtr = KMime::Message::Ptr(new KMime::Message());
87  Akonadi::Item item;
88  item.setPayload<KMime::Message::Ptr>(msgPtr);
89  MailCommon::ItemContext context(item, true);
90 
91  filter.argsFromString("foo");
92  QCOMPARE(filter.process(context, false), MailCommon::FilterAction::ErrorButGoOn);
93  QCOMPARE(context.needsPayloadStore(), false);
94 
95  filter.argsFromString("foo\tbla");
96  QCOMPARE(filter.process(context, false), MailCommon::FilterAction::ErrorButGoOn);
97  QCOMPARE(context.needsPayloadStore(), false);
98 }
99 
100 
101 void FilterActionRewriteHeaderTest::shouldRewriteHeader()
102 {
103  const QByteArray data = "From: foo@kde.org\n"
104  "To: foo@kde.org\n"
105  "Subject: test\n"
106  "testheader: foo\n"
107  "Date: Wed, 01 Apr 2015 09:33:01 +0200\n"
108  "MIME-Version: 1.0\n"
109  "\n"
110  "test";
111  const QByteArray output = "From: foo@kde.org\n"
112  "To: foo@kde.org\n"
113  "Subject: test\n"
114  "Date: Wed, 01 Apr 2015 09:33:01 +0200\n"
115  "MIME-Version: 1.0\n"
116  "testheader: bla\n"
117  "\n"
118  "test";
119 
120  MailCommon::FilterActionRewriteHeader filter(this);
121  KMime::Message::Ptr msgPtr = KMime::Message::Ptr(new KMime::Message());
122  msgPtr->setContent(data);
123  msgPtr->parse();
124  Akonadi::Item item;
125  item.setPayload<KMime::Message::Ptr>(msgPtr);
126  MailCommon::ItemContext context(item, true);
127 
128  filter.argsFromString("testheader\tfoo\tbla");
129  QCOMPARE(filter.process(context, false), MailCommon::FilterAction::GoOn);
130  QCOMPARE(context.needsPayloadStore(), true);
131  QCOMPARE(msgPtr->encodedContent(), output);
132 }
133 
134 void FilterActionRewriteHeaderTest::shouldNotRewriteHeaderWhenHeaderNotFound()
135 {
136  const QByteArray data = "From: foo@kde.org\n"
137  "To: foo@kde.org\n"
138  "Subject: test\n"
139  "Date: Wed, 01 Apr 2015 09:33:01 +0200\n"
140  "MIME-Version: 1.0\n"
141  "\n"
142  "test";
143 
144  MailCommon::FilterActionRewriteHeader filter(this);
145  KMime::Message::Ptr msgPtr = KMime::Message::Ptr(new KMime::Message());
146  msgPtr->setContent(data);
147  msgPtr->parse();
148  Akonadi::Item item;
149  item.setPayload<KMime::Message::Ptr>(msgPtr);
150  MailCommon::ItemContext context(item, true);
151 
152  filter.argsFromString("testheader\tfoo\tbla");
153  QCOMPARE(filter.process(context, false), MailCommon::FilterAction::GoOn);
154  QCOMPARE(context.needsPayloadStore(), false);
155  QCOMPARE(msgPtr->encodedContent(), data);
156 }
157 
158 void FilterActionRewriteHeaderTest::shouldNotRewriteHeaderWhenRegexpNotFound()
159 {
160  const QByteArray data = "From: foo@kde.org\n"
161  "To: foo@kde.org\n"
162  "Subject: test\n"
163  "Date: Wed, 01 Apr 2015 09:33:01 +0200\n"
164  "MIME-Version: 1.0\n"
165  "testheader: bla\n"
166  "\n"
167  "test";
168 
169  MailCommon::FilterActionRewriteHeader filter(this);
170  KMime::Message::Ptr msgPtr = KMime::Message::Ptr(new KMime::Message());
171  msgPtr->setContent(data);
172  msgPtr->parse();
173  Akonadi::Item item;
174  item.setPayload<KMime::Message::Ptr>(msgPtr);
175  MailCommon::ItemContext context(item, true);
176 
177  filter.argsFromString("testheader\tfoo\tbla");
178  QCOMPARE(filter.process(context, false), MailCommon::FilterAction::GoOn);
179  QCOMPARE(context.needsPayloadStore(), false);
180  QCOMPARE(msgPtr->encodedContent(), data);
181 }
182 
183 void FilterActionRewriteHeaderTest::shouldHaveRequiredPart()
184 {
185  MailCommon::FilterActionRewriteHeader filter;
186  QCOMPARE(filter.requiredPart(), MailCommon::SearchRule::CompleteMessage);
187 }
188 
189 
190 QTEST_KDEMAIN(FilterActionRewriteHeaderTest, GUI)
MailCommon::FilterActionRewriteHeader::process
ReturnCode process(ItemContext &context, bool applyOnOutbound) const
Execute action on given message (inside the item context).
Definition: filteractionrewriteheader.cpp:74
QWidget
MailCommon::FilterAction::GoOn
Go on with applying filter actions.
Definition: filteraction.h:62
QByteArray
MailCommon::RegExpLineEdit
Definition: regexplineedit.h:46
MailCommon::SearchRule::CompleteMessage
Definition: searchrule.h:82
FilterActionRewriteHeaderTest
Definition: filteractionrewriteheadertest.h:23
filteractionrewriteheadertest.h
MailCommon::FilterActionRewriteHeader::argsFromString
void argsFromString(const QString &argsStr)
Read extra arguments from given string.
Definition: filteractionrewriteheader.cpp:235
FilterActionRewriteHeaderTest::FilterActionRewriteHeaderTest
FilterActionRewriteHeaderTest(QObject *parent=0)
Definition: filteractionrewriteheadertest.cpp:26
MailCommon::FilterAction::ErrorButGoOn
A non-critical error occurred.
Definition: filteraction.h:63
QObject
QString::isEmpty
bool isEmpty() const
FilterActionRewriteHeaderTest::~FilterActionRewriteHeaderTest
~FilterActionRewriteHeaderTest()
Definition: filteractionrewriteheadertest.cpp:32
regexplineedit.h
QLatin1String
MailCommon::FilterActionRewriteHeader::isEmpty
bool isEmpty() const
Determines whether this action is valid.
Definition: filteractionrewriteheader.cpp:53
context
const char * context
Definition: searchpatternedit.cpp:54
MailCommon::FilterActionRewriteHeader
Definition: filteractionrewriteheader.h:33
MailCommon::ItemContext
A helper class for the filtering process.
Definition: itemcontext.h:39
QLabel
MailCommon::FilterActionRewriteHeader::createParamWidget
QWidget * createParamWidget(QWidget *parent) const
Creates a widget for setting the filter action parameter.
Definition: filteractionrewriteheader.cpp:113
MailCommon::FilterActionRewriteHeader::requiredPart
SearchRule::RequiredPart requiredPart() const
Returns the required part from the item that is needed for the action to operate. ...
Definition: filteractionrewriteheader.cpp:107
MailCommon::RegExpLineEdit::text
QString text() const
Definition: regexplineedit.cpp:97
QObject::findChild
T findChild(const QString &name) const
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:31:40 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

mailcommon

Skip menu "mailcommon"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer
  • pimprint

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal