annotate 3rdparty/vmime/tests/net/imap/IMAPCommandTest.cpp @ 0:a4671277546c tip

created the repository for the thymian project
author ferencd
date Tue, 17 Aug 2021 11:19:54 +0200
parents
children
rev   line source
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