|
ferencd@0
|
1 //
|
|
ferencd@0
|
2 // VMime library (http://www.vmime.org)
|
|
ferencd@0
|
3 // Copyright (C) 2002-2014 Vincent Richard <vincent@vmime.org>
|
|
ferencd@0
|
4 //
|
|
ferencd@0
|
5 // This program is free software; you can redistribute it and/or
|
|
ferencd@0
|
6 // modify it under the terms of the GNU General Public License as
|
|
ferencd@0
|
7 // published by the Free Software Foundation; either version 3 of
|
|
ferencd@0
|
8 // the License, or (at your option) any later version.
|
|
ferencd@0
|
9 //
|
|
ferencd@0
|
10 // This program is distributed in the hope that it will be useful,
|
|
ferencd@0
|
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
ferencd@0
|
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
ferencd@0
|
13 // General Public License for more details.
|
|
ferencd@0
|
14 //
|
|
ferencd@0
|
15 // You should have received a copy of the GNU General Public License along
|
|
ferencd@0
|
16 // with this program; if not, write to the Free Software Foundation, Inc.,
|
|
ferencd@0
|
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
ferencd@0
|
18 //
|
|
ferencd@0
|
19 // Linking this library statically or dynamically with other modules is making
|
|
ferencd@0
|
20 // a combined work based on this library. Thus, the terms and conditions of
|
|
ferencd@0
|
21 // the GNU General Public License cover the whole combination.
|
|
ferencd@0
|
22 //
|
|
ferencd@0
|
23
|
|
ferencd@0
|
24 #include "tests/testUtils.hpp"
|
|
ferencd@0
|
25
|
|
ferencd@0
|
26 #include "vmime/net/imap/IMAPCommand.hpp"
|
|
ferencd@0
|
27 #include "vmime/net/imap/IMAPStore.hpp"
|
|
ferencd@0
|
28 #include "vmime/net/imap/IMAPConnection.hpp"
|
|
ferencd@0
|
29
|
|
ferencd@0
|
30
|
|
ferencd@0
|
31 using namespace vmime::net::imap;
|
|
ferencd@0
|
32
|
|
ferencd@0
|
33
|
|
ferencd@0
|
34 VMIME_TEST_SUITE_BEGIN(IMAPCommandTest)
|
|
ferencd@0
|
35
|
|
ferencd@0
|
36 VMIME_TEST_LIST_BEGIN
|
|
ferencd@0
|
37 VMIME_TEST(testCreateCommand)
|
|
ferencd@0
|
38 VMIME_TEST(testCreateCommandParams)
|
|
ferencd@0
|
39 VMIME_TEST(testLOGIN)
|
|
ferencd@0
|
40 VMIME_TEST(testAUTHENTICATE)
|
|
ferencd@0
|
41 VMIME_TEST(testAUTHENTICATE_InitialResponse)
|
|
ferencd@0
|
42 VMIME_TEST(testLIST)
|
|
ferencd@0
|
43 VMIME_TEST(testSELECT)
|
|
ferencd@0
|
44 VMIME_TEST(testSTATUS)
|
|
ferencd@0
|
45 VMIME_TEST(testCREATE)
|
|
ferencd@0
|
46 VMIME_TEST(testDELETE)
|
|
ferencd@0
|
47 VMIME_TEST(testRENAME)
|
|
ferencd@0
|
48 VMIME_TEST(testFETCH)
|
|
ferencd@0
|
49 VMIME_TEST(testSTORE)
|
|
ferencd@0
|
50 VMIME_TEST(testAPPEND)
|
|
ferencd@0
|
51 VMIME_TEST(testCOPY)
|
|
ferencd@0
|
52 VMIME_TEST(testSEARCH)
|
|
ferencd@0
|
53 VMIME_TEST(testSTARTTLS)
|
|
ferencd@0
|
54 VMIME_TEST(testCAPABILITY)
|
|
ferencd@0
|
55 VMIME_TEST(testNOOP)
|
|
ferencd@0
|
56 VMIME_TEST(testEXPUNGE)
|
|
ferencd@0
|
57 VMIME_TEST(testCLOSE)
|
|
ferencd@0
|
58 VMIME_TEST(testLOGOUT)
|
|
ferencd@0
|
59 VMIME_TEST(testSend)
|
|
ferencd@0
|
60 VMIME_TEST_LIST_END
|
|
ferencd@0
|
61
|
|
ferencd@0
|
62
|
|
ferencd@0
|
63 void testCreateCommand()
|
|
ferencd@0
|
64 {
|
|
ferencd@0
|
65 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::createCommand("MY_COMMAND");
|
|
ferencd@0
|
66
|
|
ferencd@0
|
67 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
68 VASSERT_EQ("Text", "MY_COMMAND", cmd->getText());
|
|
ferencd@0
|
69 }
|
|
ferencd@0
|
70
|
|
ferencd@0
|
71 void testCreateCommandParams()
|
|
ferencd@0
|
72 {
|
|
ferencd@0
|
73 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::createCommand("MY_COMMAND param1 param2");
|
|
ferencd@0
|
74
|
|
ferencd@0
|
75 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
76 VASSERT_EQ("Text", "MY_COMMAND param1 param2", cmd->getText());
|
|
ferencd@0
|
77 }
|
|
ferencd@0
|
78
|
|
ferencd@0
|
79 void testLOGIN()
|
|
ferencd@0
|
80 {
|
|
ferencd@0
|
81 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::LOGIN("username", "password");
|
|
ferencd@0
|
82
|
|
ferencd@0
|
83 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
84 VASSERT_EQ("Text", "LOGIN username password", cmd->getText());
|
|
ferencd@0
|
85 VASSERT_EQ("Trace Text", "LOGIN {username} {password}", cmd->getTraceText());
|
|
ferencd@0
|
86 }
|
|
ferencd@0
|
87
|
|
ferencd@0
|
88 void testAUTHENTICATE()
|
|
ferencd@0
|
89 {
|
|
ferencd@0
|
90 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::AUTHENTICATE("saslmechanism");
|
|
ferencd@0
|
91
|
|
ferencd@0
|
92 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
93 VASSERT_EQ("Text", "AUTHENTICATE saslmechanism", cmd->getText());
|
|
ferencd@0
|
94 }
|
|
ferencd@0
|
95
|
|
ferencd@0
|
96 void testAUTHENTICATE_InitialResponse()
|
|
ferencd@0
|
97 {
|
|
ferencd@0
|
98 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::AUTHENTICATE("saslmechanism", "initial-response");
|
|
ferencd@0
|
99
|
|
ferencd@0
|
100 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
101 VASSERT_EQ("Text", "AUTHENTICATE saslmechanism initial-response", cmd->getText());
|
|
ferencd@0
|
102 }
|
|
ferencd@0
|
103
|
|
ferencd@0
|
104 void testLIST()
|
|
ferencd@0
|
105 {
|
|
ferencd@0
|
106 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::LIST("ref-name", "mailbox-name");
|
|
ferencd@0
|
107
|
|
ferencd@0
|
108 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
109 VASSERT_EQ("Text", "LIST ref-name mailbox-name", cmd->getText());
|
|
ferencd@0
|
110
|
|
ferencd@0
|
111 vmime::shared_ptr <IMAPCommand> cmdQuote = IMAPCommand::LIST("ref name", "mailbox-name");
|
|
ferencd@0
|
112
|
|
ferencd@0
|
113 VASSERT_NOT_NULL("Not null", cmdQuote);
|
|
ferencd@0
|
114 VASSERT_EQ("Text", "LIST \"ref name\" mailbox-name", cmdQuote->getText());
|
|
ferencd@0
|
115 }
|
|
ferencd@0
|
116
|
|
ferencd@0
|
117 void testSELECT()
|
|
ferencd@0
|
118 {
|
|
ferencd@0
|
119 std::vector <vmime::string> params;
|
|
ferencd@0
|
120 params.push_back("param-1");
|
|
ferencd@0
|
121 params.push_back("param-2");
|
|
ferencd@0
|
122
|
|
ferencd@0
|
123
|
|
ferencd@0
|
124 vmime::shared_ptr <IMAPCommand> cmdRO = IMAPCommand::SELECT
|
|
ferencd@0
|
125 (/* readOnly */ true, "mailbox-name", std::vector <vmime::string>());
|
|
ferencd@0
|
126
|
|
ferencd@0
|
127 VASSERT_NOT_NULL("Not null", cmdRO);
|
|
ferencd@0
|
128 VASSERT_EQ("Text", "EXAMINE mailbox-name", cmdRO->getText());
|
|
ferencd@0
|
129
|
|
ferencd@0
|
130 vmime::shared_ptr <IMAPCommand> cmdROQuote = IMAPCommand::SELECT
|
|
ferencd@0
|
131 (/* readOnly */ true, "mailbox name", std::vector <vmime::string>());
|
|
ferencd@0
|
132
|
|
ferencd@0
|
133 VASSERT_NOT_NULL("Not null", cmdROQuote);
|
|
ferencd@0
|
134 VASSERT_EQ("Text", "EXAMINE \"mailbox name\"", cmdROQuote->getText());
|
|
ferencd@0
|
135
|
|
ferencd@0
|
136
|
|
ferencd@0
|
137 vmime::shared_ptr <IMAPCommand> cmdRW = IMAPCommand::SELECT
|
|
ferencd@0
|
138 (/* readOnly */ false, "mailbox-name", std::vector <vmime::string>());
|
|
ferencd@0
|
139
|
|
ferencd@0
|
140 VASSERT_NOT_NULL("Not null", cmdRW);
|
|
ferencd@0
|
141 VASSERT_EQ("Text", "SELECT mailbox-name", cmdRW->getText());
|
|
ferencd@0
|
142
|
|
ferencd@0
|
143 vmime::shared_ptr <IMAPCommand> cmdRWParams = IMAPCommand::SELECT
|
|
ferencd@0
|
144 (/* readOnly */ false, "mailbox-name", params);
|
|
ferencd@0
|
145
|
|
ferencd@0
|
146 VASSERT_NOT_NULL("Not null", cmdRWParams);
|
|
ferencd@0
|
147 VASSERT_EQ("Text", "SELECT mailbox-name (param-1 param-2)", cmdRWParams->getText());
|
|
ferencd@0
|
148
|
|
ferencd@0
|
149 vmime::shared_ptr <IMAPCommand> cmdRWQuote = IMAPCommand::SELECT
|
|
ferencd@0
|
150 (/* readOnly */ false, "mailbox name", std::vector <vmime::string>());
|
|
ferencd@0
|
151
|
|
ferencd@0
|
152 VASSERT_NOT_NULL("Not null", cmdRWQuote);
|
|
ferencd@0
|
153 VASSERT_EQ("Text", "SELECT \"mailbox name\"", cmdRWQuote->getText());
|
|
ferencd@0
|
154 }
|
|
ferencd@0
|
155
|
|
ferencd@0
|
156 void testSTATUS()
|
|
ferencd@0
|
157 {
|
|
ferencd@0
|
158 std::vector <vmime::string> attribs;
|
|
ferencd@0
|
159 attribs.push_back("attrib-1");
|
|
ferencd@0
|
160 attribs.push_back("attrib-2");
|
|
ferencd@0
|
161
|
|
ferencd@0
|
162
|
|
ferencd@0
|
163 vmime::shared_ptr <IMAPCommand> cmd =
|
|
ferencd@0
|
164 IMAPCommand::STATUS("mailbox-name", attribs);
|
|
ferencd@0
|
165
|
|
ferencd@0
|
166 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
167 VASSERT_EQ("Text", "STATUS mailbox-name (attrib-1 attrib-2)", cmd->getText());
|
|
ferencd@0
|
168
|
|
ferencd@0
|
169
|
|
ferencd@0
|
170 vmime::shared_ptr <IMAPCommand> cmdQuote =
|
|
ferencd@0
|
171 IMAPCommand::STATUS("mailbox name", attribs);
|
|
ferencd@0
|
172
|
|
ferencd@0
|
173 VASSERT_NOT_NULL("Not null", cmdQuote);
|
|
ferencd@0
|
174 VASSERT_EQ("Text", "STATUS \"mailbox name\" (attrib-1 attrib-2)", cmdQuote->getText());
|
|
ferencd@0
|
175 }
|
|
ferencd@0
|
176
|
|
ferencd@0
|
177 void testCREATE()
|
|
ferencd@0
|
178 {
|
|
ferencd@0
|
179 std::vector <vmime::string> params;
|
|
ferencd@0
|
180 params.push_back("param-1");
|
|
ferencd@0
|
181 params.push_back("param-2");
|
|
ferencd@0
|
182
|
|
ferencd@0
|
183
|
|
ferencd@0
|
184 vmime::shared_ptr <IMAPCommand> cmd =
|
|
ferencd@0
|
185 IMAPCommand::CREATE("mailbox-name", params);
|
|
ferencd@0
|
186
|
|
ferencd@0
|
187 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
188 VASSERT_EQ("Text", "CREATE mailbox-name (param-1 param-2)", cmd->getText());
|
|
ferencd@0
|
189
|
|
ferencd@0
|
190
|
|
ferencd@0
|
191 vmime::shared_ptr <IMAPCommand> cmdQuote =
|
|
ferencd@0
|
192 IMAPCommand::CREATE("mailbox name", params);
|
|
ferencd@0
|
193
|
|
ferencd@0
|
194 VASSERT_NOT_NULL("Not null", cmdQuote);
|
|
ferencd@0
|
195 VASSERT_EQ("Text", "CREATE \"mailbox name\" (param-1 param-2)", cmdQuote->getText());
|
|
ferencd@0
|
196
|
|
ferencd@0
|
197
|
|
ferencd@0
|
198 vmime::shared_ptr <IMAPCommand> cmdNoParam =
|
|
ferencd@0
|
199 IMAPCommand::CREATE("mailbox-name", std::vector <vmime::string>());
|
|
ferencd@0
|
200
|
|
ferencd@0
|
201 VASSERT_NOT_NULL("Not null", cmdNoParam);
|
|
ferencd@0
|
202 VASSERT_EQ("Text", "CREATE mailbox-name", cmdNoParam->getText());
|
|
ferencd@0
|
203 }
|
|
ferencd@0
|
204
|
|
ferencd@0
|
205 void testDELETE()
|
|
ferencd@0
|
206 {
|
|
ferencd@0
|
207 vmime::shared_ptr <IMAPCommand> cmd =
|
|
ferencd@0
|
208 IMAPCommand::DELETE("mailbox-name");
|
|
ferencd@0
|
209
|
|
ferencd@0
|
210 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
211 VASSERT_EQ("Text", "DELETE mailbox-name", cmd->getText());
|
|
ferencd@0
|
212
|
|
ferencd@0
|
213
|
|
ferencd@0
|
214 vmime::shared_ptr <IMAPCommand> cmdQuote =
|
|
ferencd@0
|
215 IMAPCommand::DELETE("mailbox name");
|
|
ferencd@0
|
216
|
|
ferencd@0
|
217 VASSERT_NOT_NULL("Not null", cmdQuote);
|
|
ferencd@0
|
218 VASSERT_EQ("Text", "DELETE \"mailbox name\"", cmdQuote->getText());
|
|
ferencd@0
|
219 }
|
|
ferencd@0
|
220
|
|
ferencd@0
|
221 void testRENAME()
|
|
ferencd@0
|
222 {
|
|
ferencd@0
|
223 vmime::shared_ptr <IMAPCommand> cmd =
|
|
ferencd@0
|
224 IMAPCommand::RENAME("mailbox-name", "new-mailbox-name");
|
|
ferencd@0
|
225
|
|
ferencd@0
|
226 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
227 VASSERT_EQ("Text", "RENAME mailbox-name new-mailbox-name", cmd->getText());
|
|
ferencd@0
|
228
|
|
ferencd@0
|
229
|
|
ferencd@0
|
230 vmime::shared_ptr <IMAPCommand> cmdQuote =
|
|
ferencd@0
|
231 IMAPCommand::RENAME("mailbox name", "new mailbox name");
|
|
ferencd@0
|
232
|
|
ferencd@0
|
233 VASSERT_NOT_NULL("Not null", cmdQuote);
|
|
ferencd@0
|
234 VASSERT_EQ("Text", "RENAME \"mailbox name\" \"new mailbox name\"", cmdQuote->getText());
|
|
ferencd@0
|
235 }
|
|
ferencd@0
|
236
|
|
ferencd@0
|
237 void testFETCH()
|
|
ferencd@0
|
238 {
|
|
ferencd@0
|
239 std::vector <vmime::string> params;
|
|
ferencd@0
|
240 params.push_back("param-1");
|
|
ferencd@0
|
241 params.push_back("param-2");
|
|
ferencd@0
|
242
|
|
ferencd@0
|
243
|
|
ferencd@0
|
244 vmime::shared_ptr <IMAPCommand> cmdNum =
|
|
ferencd@0
|
245 IMAPCommand::FETCH(vmime::net::messageSet::byNumber(42), params);
|
|
ferencd@0
|
246
|
|
ferencd@0
|
247 VASSERT_NOT_NULL("Not null", cmdNum);
|
|
ferencd@0
|
248 VASSERT_EQ("Text", "FETCH 42 (param-1 param-2)", cmdNum->getText());
|
|
ferencd@0
|
249
|
|
ferencd@0
|
250
|
|
ferencd@0
|
251 vmime::shared_ptr <IMAPCommand> cmdNums =
|
|
ferencd@0
|
252 IMAPCommand::FETCH(vmime::net::messageSet::byNumber(42, 47), params);
|
|
ferencd@0
|
253
|
|
ferencd@0
|
254 VASSERT_NOT_NULL("Not null", cmdNums);
|
|
ferencd@0
|
255 VASSERT_EQ("Text", "FETCH 42:47 (param-1 param-2)", cmdNums->getText());
|
|
ferencd@0
|
256
|
|
ferencd@0
|
257
|
|
ferencd@0
|
258 vmime::shared_ptr <IMAPCommand> cmdUID =
|
|
ferencd@0
|
259 IMAPCommand::FETCH(vmime::net::messageSet::byUID(42), params);
|
|
ferencd@0
|
260
|
|
ferencd@0
|
261 VASSERT_NOT_NULL("Not null", cmdUID);
|
|
ferencd@0
|
262 VASSERT_EQ("Text", "UID FETCH 42 (param-1 param-2)", cmdUID->getText());
|
|
ferencd@0
|
263
|
|
ferencd@0
|
264
|
|
ferencd@0
|
265 vmime::shared_ptr <IMAPCommand> cmdUIDs =
|
|
ferencd@0
|
266 IMAPCommand::FETCH(vmime::net::messageSet::byUID(42, 47), params);
|
|
ferencd@0
|
267
|
|
ferencd@0
|
268 VASSERT_NOT_NULL("Not null", cmdUIDs);
|
|
ferencd@0
|
269 VASSERT_EQ("Text", "UID FETCH 42:47 (param-1 param-2)", cmdUIDs->getText());
|
|
ferencd@0
|
270 }
|
|
ferencd@0
|
271
|
|
ferencd@0
|
272 void testSTORE()
|
|
ferencd@0
|
273 {
|
|
ferencd@0
|
274 std::vector <vmime::string> flags;
|
|
ferencd@0
|
275 flags.push_back("flag-1");
|
|
ferencd@0
|
276 flags.push_back("flag-2");
|
|
ferencd@0
|
277
|
|
ferencd@0
|
278
|
|
ferencd@0
|
279 vmime::shared_ptr <IMAPCommand> cmdNum = IMAPCommand::STORE
|
|
ferencd@0
|
280 (vmime::net::messageSet::byNumber(42), vmime::net::message::FLAG_MODE_SET, flags);
|
|
ferencd@0
|
281
|
|
ferencd@0
|
282 VASSERT_NOT_NULL("Not null", cmdNum);
|
|
ferencd@0
|
283 VASSERT_EQ("Text", "STORE 42 FLAGS (flag-1 flag-2)", cmdNum->getText());
|
|
ferencd@0
|
284
|
|
ferencd@0
|
285
|
|
ferencd@0
|
286 vmime::shared_ptr <IMAPCommand> cmdNums = IMAPCommand::STORE
|
|
ferencd@0
|
287 (vmime::net::messageSet::byNumber(42, 47), vmime::net::message::FLAG_MODE_SET, flags);
|
|
ferencd@0
|
288
|
|
ferencd@0
|
289 VASSERT_NOT_NULL("Not null", cmdNums);
|
|
ferencd@0
|
290 VASSERT_EQ("Text", "STORE 42:47 FLAGS (flag-1 flag-2)", cmdNums->getText());
|
|
ferencd@0
|
291
|
|
ferencd@0
|
292
|
|
ferencd@0
|
293 vmime::shared_ptr <IMAPCommand> cmdUID = IMAPCommand::STORE
|
|
ferencd@0
|
294 (vmime::net::messageSet::byUID(42), vmime::net::message::FLAG_MODE_SET, flags);
|
|
ferencd@0
|
295
|
|
ferencd@0
|
296 VASSERT_NOT_NULL("Not null", cmdUID);
|
|
ferencd@0
|
297 VASSERT_EQ("Text", "UID STORE 42 FLAGS (flag-1 flag-2)", cmdUID->getText());
|
|
ferencd@0
|
298
|
|
ferencd@0
|
299
|
|
ferencd@0
|
300 vmime::shared_ptr <IMAPCommand> cmdUIDs = IMAPCommand::STORE
|
|
ferencd@0
|
301 (vmime::net::messageSet::byUID(42, 47), vmime::net::message::FLAG_MODE_SET, flags);
|
|
ferencd@0
|
302
|
|
ferencd@0
|
303 VASSERT_NOT_NULL("Not null", cmdUIDs);
|
|
ferencd@0
|
304 VASSERT_EQ("Text", "UID STORE 42:47 FLAGS (flag-1 flag-2)", cmdUIDs->getText());
|
|
ferencd@0
|
305
|
|
ferencd@0
|
306
|
|
ferencd@0
|
307 vmime::shared_ptr <IMAPCommand> cmdAdd = IMAPCommand::STORE
|
|
ferencd@0
|
308 (vmime::net::messageSet::byUID(42, 47), vmime::net::message::FLAG_MODE_ADD, flags);
|
|
ferencd@0
|
309
|
|
ferencd@0
|
310 VASSERT_NOT_NULL("Not null", cmdAdd);
|
|
ferencd@0
|
311 VASSERT_EQ("Text", "UID STORE 42:47 +FLAGS (flag-1 flag-2)", cmdAdd->getText());
|
|
ferencd@0
|
312
|
|
ferencd@0
|
313
|
|
ferencd@0
|
314 vmime::shared_ptr <IMAPCommand> cmdRem = IMAPCommand::STORE
|
|
ferencd@0
|
315 (vmime::net::messageSet::byUID(42, 47), vmime::net::message::FLAG_MODE_REMOVE, flags);
|
|
ferencd@0
|
316
|
|
ferencd@0
|
317 VASSERT_NOT_NULL("Not null", cmdRem);
|
|
ferencd@0
|
318 VASSERT_EQ("Text", "UID STORE 42:47 -FLAGS (flag-1 flag-2)", cmdRem->getText());
|
|
ferencd@0
|
319 }
|
|
ferencd@0
|
320
|
|
ferencd@0
|
321 void testAPPEND()
|
|
ferencd@0
|
322 {
|
|
ferencd@0
|
323 std::vector <vmime::string> flags;
|
|
ferencd@0
|
324 flags.push_back("flag-1");
|
|
ferencd@0
|
325 flags.push_back("flag-2");
|
|
ferencd@0
|
326
|
|
ferencd@0
|
327
|
|
ferencd@0
|
328 vmime::shared_ptr <IMAPCommand> cmd =
|
|
ferencd@0
|
329 IMAPCommand::APPEND("mailbox-name", flags, /* date */ NULL, 1234);
|
|
ferencd@0
|
330
|
|
ferencd@0
|
331 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
332 VASSERT_EQ("Text", "APPEND mailbox-name (flag-1 flag-2) {1234}", cmd->getText());
|
|
ferencd@0
|
333
|
|
ferencd@0
|
334
|
|
ferencd@0
|
335 vmime::shared_ptr <IMAPCommand> cmdQuote =
|
|
ferencd@0
|
336 IMAPCommand::APPEND("mailbox name", flags, /* date */ NULL, 1234);
|
|
ferencd@0
|
337
|
|
ferencd@0
|
338 VASSERT_NOT_NULL("Not null", cmdQuote);
|
|
ferencd@0
|
339 VASSERT_EQ("Text", "APPEND \"mailbox name\" (flag-1 flag-2) {1234}", cmdQuote->getText());
|
|
ferencd@0
|
340
|
|
ferencd@0
|
341
|
|
ferencd@0
|
342 vmime::datetime date(2014, 3, 15, 23, 11, 47, vmime::datetime::GMT2);
|
|
ferencd@0
|
343 vmime::shared_ptr <IMAPCommand> cmdDate =
|
|
ferencd@0
|
344 IMAPCommand::APPEND("mailbox name", flags, &date, 1234);
|
|
ferencd@0
|
345
|
|
ferencd@0
|
346 VASSERT_NOT_NULL("Not null", cmdDate);
|
|
ferencd@0
|
347 VASSERT_EQ("Text", "APPEND \"mailbox name\" (flag-1 flag-2) \"15-Mar-2014 23:11:47 +0200\" {1234}", cmdDate->getText());
|
|
ferencd@0
|
348 }
|
|
ferencd@0
|
349
|
|
ferencd@0
|
350 void testCOPY()
|
|
ferencd@0
|
351 {
|
|
ferencd@0
|
352 vmime::shared_ptr <IMAPCommand> cmdNum =
|
|
ferencd@0
|
353 IMAPCommand::COPY(vmime::net::messageSet::byNumber(42), "mailbox-name");
|
|
ferencd@0
|
354
|
|
ferencd@0
|
355 VASSERT_NOT_NULL("Not null", cmdNum);
|
|
ferencd@0
|
356 VASSERT_EQ("Text", "COPY 42 mailbox-name", cmdNum->getText());
|
|
ferencd@0
|
357
|
|
ferencd@0
|
358
|
|
ferencd@0
|
359 vmime::shared_ptr <IMAPCommand> cmdNums =
|
|
ferencd@0
|
360 IMAPCommand::COPY(vmime::net::messageSet::byNumber(42, 47), "mailbox-name");
|
|
ferencd@0
|
361
|
|
ferencd@0
|
362 VASSERT_NOT_NULL("Not null", cmdNums);
|
|
ferencd@0
|
363 VASSERT_EQ("Text", "COPY 42:47 mailbox-name", cmdNums->getText());
|
|
ferencd@0
|
364
|
|
ferencd@0
|
365
|
|
ferencd@0
|
366 vmime::shared_ptr <IMAPCommand> cmdUID =
|
|
ferencd@0
|
367 IMAPCommand::COPY(vmime::net::messageSet::byUID(42), "mailbox-name");
|
|
ferencd@0
|
368
|
|
ferencd@0
|
369 VASSERT_NOT_NULL("Not null", cmdUID);
|
|
ferencd@0
|
370 VASSERT_EQ("Text", "UID COPY 42 mailbox-name", cmdUID->getText());
|
|
ferencd@0
|
371
|
|
ferencd@0
|
372
|
|
ferencd@0
|
373 vmime::shared_ptr <IMAPCommand> cmdUIDs =
|
|
ferencd@0
|
374 IMAPCommand::COPY(vmime::net::messageSet::byUID(42, 47), "mailbox-name");
|
|
ferencd@0
|
375
|
|
ferencd@0
|
376 VASSERT_NOT_NULL("Not null", cmdUIDs);
|
|
ferencd@0
|
377 VASSERT_EQ("Text", "UID COPY 42:47 mailbox-name", cmdUIDs->getText());
|
|
ferencd@0
|
378
|
|
ferencd@0
|
379
|
|
ferencd@0
|
380 vmime::shared_ptr <IMAPCommand> cmdQuote =
|
|
ferencd@0
|
381 IMAPCommand::COPY(vmime::net::messageSet::byNumber(42, 47), "mailbox name");
|
|
ferencd@0
|
382
|
|
ferencd@0
|
383 VASSERT_NOT_NULL("Not null", cmdQuote);
|
|
ferencd@0
|
384 VASSERT_EQ("Text", "COPY 42:47 \"mailbox name\"", cmdQuote->getText());
|
|
ferencd@0
|
385 }
|
|
ferencd@0
|
386
|
|
ferencd@0
|
387 void testSEARCH()
|
|
ferencd@0
|
388 {
|
|
ferencd@0
|
389 std::vector <vmime::string> searchKeys;
|
|
ferencd@0
|
390 searchKeys.push_back("search-key-1");
|
|
ferencd@0
|
391 searchKeys.push_back("search-key-2");
|
|
ferencd@0
|
392
|
|
ferencd@0
|
393 vmime::shared_ptr <IMAPCommand> cmd =
|
|
ferencd@0
|
394 IMAPCommand::SEARCH(searchKeys, /* charset */ NULL);
|
|
ferencd@0
|
395
|
|
ferencd@0
|
396 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
397 VASSERT_EQ("Text", "SEARCH search-key-1 search-key-2", cmd->getText());
|
|
ferencd@0
|
398
|
|
ferencd@0
|
399
|
|
ferencd@0
|
400 vmime::charset cset("test-charset");
|
|
ferencd@0
|
401
|
|
ferencd@0
|
402 vmime::shared_ptr <IMAPCommand> cmdCset =
|
|
ferencd@0
|
403 IMAPCommand::SEARCH(searchKeys, &cset);
|
|
ferencd@0
|
404
|
|
ferencd@0
|
405 VASSERT_NOT_NULL("Not null", cmdCset);
|
|
ferencd@0
|
406 VASSERT_EQ("Text", "SEARCH CHARSET test-charset search-key-1 search-key-2", cmdCset->getText());
|
|
ferencd@0
|
407 }
|
|
ferencd@0
|
408
|
|
ferencd@0
|
409 void testSTARTTLS()
|
|
ferencd@0
|
410 {
|
|
ferencd@0
|
411 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::STARTTLS();
|
|
ferencd@0
|
412
|
|
ferencd@0
|
413 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
414 VASSERT_EQ("Text", "STARTTLS", cmd->getText());
|
|
ferencd@0
|
415 }
|
|
ferencd@0
|
416
|
|
ferencd@0
|
417 void testCAPABILITY()
|
|
ferencd@0
|
418 {
|
|
ferencd@0
|
419 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::CAPABILITY();
|
|
ferencd@0
|
420
|
|
ferencd@0
|
421 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
422 VASSERT_EQ("Text", "CAPABILITY", cmd->getText());
|
|
ferencd@0
|
423 }
|
|
ferencd@0
|
424
|
|
ferencd@0
|
425 void testNOOP()
|
|
ferencd@0
|
426 {
|
|
ferencd@0
|
427 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::NOOP();
|
|
ferencd@0
|
428
|
|
ferencd@0
|
429 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
430 VASSERT_EQ("Text", "NOOP", cmd->getText());
|
|
ferencd@0
|
431 }
|
|
ferencd@0
|
432
|
|
ferencd@0
|
433 void testEXPUNGE()
|
|
ferencd@0
|
434 {
|
|
ferencd@0
|
435 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::EXPUNGE();
|
|
ferencd@0
|
436
|
|
ferencd@0
|
437 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
438 VASSERT_EQ("Text", "EXPUNGE", cmd->getText());
|
|
ferencd@0
|
439 }
|
|
ferencd@0
|
440
|
|
ferencd@0
|
441 void testCLOSE()
|
|
ferencd@0
|
442 {
|
|
ferencd@0
|
443 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::CLOSE();
|
|
ferencd@0
|
444
|
|
ferencd@0
|
445 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
446 VASSERT_EQ("Text", "CLOSE", cmd->getText());
|
|
ferencd@0
|
447 }
|
|
ferencd@0
|
448
|
|
ferencd@0
|
449 void testLOGOUT()
|
|
ferencd@0
|
450 {
|
|
ferencd@0
|
451 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::LOGOUT();
|
|
ferencd@0
|
452
|
|
ferencd@0
|
453 VASSERT_NOT_NULL("Not null", cmd);
|
|
ferencd@0
|
454 VASSERT_EQ("Text", "LOGOUT", cmd->getText());
|
|
ferencd@0
|
455 }
|
|
ferencd@0
|
456
|
|
ferencd@0
|
457 void testSend()
|
|
ferencd@0
|
458 {
|
|
ferencd@0
|
459 vmime::shared_ptr <IMAPCommand> cmd = IMAPCommand::createCommand("MY_COMMAND param1 param2");
|
|
ferencd@0
|
460
|
|
ferencd@0
|
461 vmime::shared_ptr <vmime::net::session> sess =
|
|
ferencd@0
|
462 vmime::make_shared <vmime::net::session>();
|
|
ferencd@0
|
463
|
|
ferencd@0
|
464 vmime::shared_ptr <vmime::security::authenticator> auth =
|
|
ferencd@0
|
465 vmime::make_shared <vmime::security::defaultAuthenticator>();
|
|
ferencd@0
|
466
|
|
ferencd@0
|
467 vmime::shared_ptr <IMAPStore> store =
|
|
ferencd@0
|
468 vmime::make_shared <IMAPStore>(sess, auth, /* secured */ false);
|
|
ferencd@0
|
469
|
|
ferencd@0
|
470 vmime::shared_ptr <IMAPConnection> conn =
|
|
ferencd@0
|
471 vmime::make_shared <IMAPConnection>(store, auth);
|
|
ferencd@0
|
472
|
|
ferencd@0
|
473 vmime::shared_ptr <testSocket> sok = vmime::make_shared <testSocket>();
|
|
ferencd@0
|
474 conn->setSocket(sok);
|
|
ferencd@0
|
475
|
|
ferencd@0
|
476 cmd->send(conn);
|
|
ferencd@0
|
477
|
|
ferencd@0
|
478 vmime::string response;
|
|
ferencd@0
|
479 sok->localReceive(response);
|
|
ferencd@0
|
480
|
|
ferencd@0
|
481 VASSERT_EQ("Sent buffer", vmime::string(*conn->getTag()) + " MY_COMMAND param1 param2\r\n", response);
|
|
ferencd@0
|
482 }
|
|
ferencd@0
|
483
|
|
ferencd@0
|
484 VMIME_TEST_SUITE_END
|