• 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
filteractionremoveheadertest.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 "filteractionremoveheadertest.h"
19 #include "../filteractions/filteractionremoveheader.h"
20 #include <qtest_kde.h>
21 #include <widgets/minimumcombobox.h>
22 
23 FilterActionRemoveHeaderTest::FilterActionRemoveHeaderTest(QObject *parent)
24  : QObject(parent)
25 {
26 
27 }
28 
29 FilterActionRemoveHeaderTest::~FilterActionRemoveHeaderTest()
30 {
31 
32 }
33 
34 void FilterActionRemoveHeaderTest::shouldHaveDefaultValue()
35 {
36  MailCommon::FilterActionRemoveHeader filter;
37  QWidget *w = filter.createParamWidget(0);
38  PimCommon::MinimumComboBox *comboBox = dynamic_cast<PimCommon::MinimumComboBox *>(w);
39  QVERIFY(comboBox);
40  QVERIFY(comboBox->isEditable());
41  QVERIFY(comboBox->count()>0);
42 }
43 
44 void FilterActionRemoveHeaderTest::shouldHaveSieveRequires()
45 {
46  MailCommon::FilterActionRemoveHeader filter;
47  QCOMPARE(filter.sieveRequires(), QStringList() << QLatin1String("editheader"));
48 }
49 
50 void FilterActionRemoveHeaderTest::shouldBeEmpty()
51 {
52  MailCommon::FilterActionRemoveHeader filter;
53  QVERIFY(filter.isEmpty());
54  filter.argsFromString(QLatin1String("bla"));
55  QVERIFY(!filter.isEmpty());
56 }
57 
58 void FilterActionRemoveHeaderTest::shouldNotExecuteActionWhenParameterIsEmpty()
59 {
60  MailCommon::FilterActionRemoveHeader filter(this);
61  KMime::Message::Ptr msgPtr = KMime::Message::Ptr(new KMime::Message());
62  Akonadi::Item item;
63  item.setPayload<KMime::Message::Ptr>(msgPtr);
64  MailCommon::ItemContext context(item, true);
65 
66  filter.argsFromString("");
67  QCOMPARE(filter.process(context, false), MailCommon::FilterAction::ErrorButGoOn);
68  QCOMPARE(context.needsPayloadStore(), false);
69 }
70 
71 void FilterActionRemoveHeaderTest::shouldRemoveHeader()
72 {
73  const QByteArray data = "From: foo@kde.org\n"
74  "To: foo@kde.org\n"
75  "Subject: test\n"
76  "testheader: foo\n"
77  "Date: Wed, 01 Apr 2015 09:33:01 +0200\n"
78  "MIME-Version: 1.0\n"
79  "\n"
80  "test";
81  const QByteArray output = "From: foo@kde.org\n"
82  "To: foo@kde.org\n"
83  "Subject: test\n"
84  "Date: Wed, 01 Apr 2015 09:33:01 +0200\n"
85  "MIME-Version: 1.0\n"
86  "\n"
87  "test";
88 
89  MailCommon::FilterActionRemoveHeader filter(this);
90  KMime::Message::Ptr msgPtr = KMime::Message::Ptr(new KMime::Message());
91  msgPtr->setContent(data);
92  msgPtr->parse();
93  Akonadi::Item item;
94  item.setPayload<KMime::Message::Ptr>(msgPtr);
95  MailCommon::ItemContext context(item, true);
96 
97  filter.argsFromString("testheader");
98  QCOMPARE(filter.process(context, false), MailCommon::FilterAction::GoOn);
99  QCOMPARE(context.needsPayloadStore(), true);
100  QCOMPARE(msgPtr->encodedContent(), output);
101 }
102 
103 void FilterActionRemoveHeaderTest::shouldNotTryToRemoveHeaderWhenItDoesntExist()
104 {
105  const QByteArray data = "From: foo@kde.org\n"
106  "To: foo@kde.org\n"
107  "Subject: test\n"
108  "testheader2: foo\n"
109  "Date: Wed, 01 Apr 2015 09:33:01 +0200\n"
110  "MIME-Version: 1.0\n"
111  "\n"
112  "test";
113 
114  MailCommon::FilterActionRemoveHeader filter(this);
115  KMime::Message::Ptr msgPtr = KMime::Message::Ptr(new KMime::Message());
116  msgPtr->setContent(data);
117  msgPtr->parse();
118  Akonadi::Item item;
119  item.setPayload<KMime::Message::Ptr>(msgPtr);
120  MailCommon::ItemContext context(item, true);
121 
122  filter.argsFromString("testheader");
123  QCOMPARE(filter.process(context, false), MailCommon::FilterAction::GoOn);
124  QCOMPARE(context.needsPayloadStore(), false);
125  QCOMPARE(msgPtr->encodedContent(), data);
126 }
127 
128 void FilterActionRemoveHeaderTest::shouldRemoveMultiHeader()
129 {
130  const QByteArray data = "From: foo@kde.org\n"
131  "To: foo@kde.org\n"
132  "Subject: test\n"
133  "testheader: foo\n"
134  "testheader: foo\n"
135  "testheader: bla\n"
136  "Date: Wed, 01 Apr 2015 09:33:01 +0200\n"
137  "MIME-Version: 1.0\n"
138  "\n"
139  "test";
140  const QByteArray output = "From: foo@kde.org\n"
141  "To: foo@kde.org\n"
142  "Subject: test\n"
143  "Date: Wed, 01 Apr 2015 09:33:01 +0200\n"
144  "MIME-Version: 1.0\n"
145  "\n"
146  "test";
147 
148  MailCommon::FilterActionRemoveHeader filter(this);
149  KMime::Message::Ptr msgPtr = KMime::Message::Ptr(new KMime::Message());
150  msgPtr->setContent(data);
151  msgPtr->parse();
152  Akonadi::Item item;
153  item.setPayload<KMime::Message::Ptr>(msgPtr);
154  MailCommon::ItemContext context(item, true);
155 
156  filter.argsFromString("testheader");
157  QCOMPARE(filter.process(context, false), MailCommon::FilterAction::GoOn);
158  QCOMPARE(context.needsPayloadStore(), true);
159  QCOMPARE(msgPtr->encodedContent(), output);
160 }
161 
162 void FilterActionRemoveHeaderTest::shouldHaveRequiredPart()
163 {
164  MailCommon::FilterActionRemoveHeader filter;
165  QCOMPARE(filter.requiredPart(), MailCommon::SearchRule::CompleteMessage);
166 }
167 
168 QTEST_KDEMAIN(FilterActionRemoveHeaderTest, GUI)
QWidget
MailCommon::FilterAction::GoOn
Go on with applying filter actions.
Definition: filteraction.h:62
QByteArray
MailCommon::SearchRule::CompleteMessage
Definition: searchrule.h:82
filteractionremoveheadertest.h
MailCommon::FilterAction::ErrorButGoOn
A non-critical error occurred.
Definition: filteraction.h:63
MailCommon::FilterActionRemoveHeader::sieveRequires
QStringList sieveRequires() const
Definition: filteractionremoveheader.cpp:104
QObject
FilterActionRemoveHeaderTest::~FilterActionRemoveHeaderTest
~FilterActionRemoveHeaderTest()
Definition: filteractionremoveheadertest.cpp:29
MailCommon::FilterActionRemoveHeader::requiredPart
SearchRule::RequiredPart requiredPart() const
Returns the required part from the item that is needed for the action to operate. ...
Definition: filteractionremoveheader.cpp:83
QStringList
MailCommon::FilterActionRemoveHeader::createParamWidget
QWidget * createParamWidget(QWidget *parent) const
Creates a widget for setting the filter action parameter.
Definition: filteractionremoveheader.cpp:47
MailCommon::FilterActionWithStringList::argsFromString
virtual void argsFromString(const QString &argsStr)
Read extra arguments from given string.
Definition: filteractionwithstringlist.cpp:61
FilterActionRemoveHeaderTest
Definition: filteractionremoveheadertest.h:23
QLatin1String
MailCommon::FilterActionRemoveHeader
Definition: filteractionremoveheader.h:31
context
const char * context
Definition: searchpatternedit.cpp:54
MailCommon::FilterActionRemoveHeader::process
ReturnCode process(ItemContext &context, bool applyOnOutbound) const
Execute action on given message (inside the item context).
Definition: filteractionremoveheader.cpp:62
FilterActionRemoveHeaderTest::FilterActionRemoveHeaderTest
FilterActionRemoveHeaderTest(QObject *parent=0)
Definition: filteractionremoveheadertest.cpp:23
MailCommon::ItemContext
A helper class for the filtering process.
Definition: itemcontext.h:39
MailCommon::FilterActionWithString::isEmpty
virtual bool isEmpty() const
Determines whether this action is valid.
Definition: filteractionwithstring.cpp:33
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