ferencd@0: // ferencd@0: // VMime library (http://www.vmime.org) ferencd@0: // Copyright (C) 2002-2014 Vincent Richard ferencd@0: // ferencd@0: // This program is free software; you can redistribute it and/or ferencd@0: // modify it under the terms of the GNU General Public License as ferencd@0: // published by the Free Software Foundation; either version 3 of ferencd@0: // the License, or (at your option) any later version. ferencd@0: // ferencd@0: // This program is distributed in the hope that it will be useful, ferencd@0: // but WITHOUT ANY WARRANTY; without even the implied warranty of ferencd@0: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ferencd@0: // General Public License for more details. ferencd@0: // ferencd@0: // You should have received a copy of the GNU General Public License along ferencd@0: // with this program; if not, write to the Free Software Foundation, Inc., ferencd@0: // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ferencd@0: // ferencd@0: // Linking this library statically or dynamically with other modules is making ferencd@0: // a combined work based on this library. Thus, the terms and conditions of ferencd@0: // the GNU General Public License cover the whole combination. ferencd@0: // ferencd@0: ferencd@0: #include "tests/testUtils.hpp" ferencd@0: ferencd@0: #include "vmime/net/imap/IMAPCommand.hpp" ferencd@0: #include "vmime/net/imap/IMAPStore.hpp" ferencd@0: #include "vmime/net/imap/IMAPConnection.hpp" ferencd@0: ferencd@0: ferencd@0: using namespace vmime::net::imap; ferencd@0: ferencd@0: ferencd@0: VMIME_TEST_SUITE_BEGIN(IMAPCommandTest) ferencd@0: ferencd@0: VMIME_TEST_LIST_BEGIN ferencd@0: VMIME_TEST(testCreateCommand) ferencd@0: VMIME_TEST(testCreateCommandParams) ferencd@0: VMIME_TEST(testLOGIN) ferencd@0: VMIME_TEST(testAUTHENTICATE) ferencd@0: VMIME_TEST(testAUTHENTICATE_InitialResponse) ferencd@0: VMIME_TEST(testLIST) ferencd@0: VMIME_TEST(testSELECT) ferencd@0: VMIME_TEST(testSTATUS) ferencd@0: VMIME_TEST(testCREATE) ferencd@0: VMIME_TEST(testDELETE) ferencd@0: VMIME_TEST(testRENAME) ferencd@0: VMIME_TEST(testFETCH) ferencd@0: VMIME_TEST(testSTORE) ferencd@0: VMIME_TEST(testAPPEND) ferencd@0: VMIME_TEST(testCOPY) ferencd@0: VMIME_TEST(testSEARCH) ferencd@0: VMIME_TEST(testSTARTTLS) ferencd@0: VMIME_TEST(testCAPABILITY) ferencd@0: VMIME_TEST(testNOOP) ferencd@0: VMIME_TEST(testEXPUNGE) ferencd@0: VMIME_TEST(testCLOSE) ferencd@0: VMIME_TEST(testLOGOUT) ferencd@0: VMIME_TEST(testSend) ferencd@0: VMIME_TEST_LIST_END ferencd@0: ferencd@0: ferencd@0: void testCreateCommand() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::createCommand("MY_COMMAND"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "MY_COMMAND", cmd->getText()); ferencd@0: } ferencd@0: ferencd@0: void testCreateCommandParams() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::createCommand("MY_COMMAND param1 param2"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "MY_COMMAND param1 param2", cmd->getText()); ferencd@0: } ferencd@0: ferencd@0: void testLOGIN() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::LOGIN("username", "password"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "LOGIN username password", cmd->getText()); ferencd@0: VASSERT_EQ("Trace Text", "LOGIN {username} {password}", cmd->getTraceText()); ferencd@0: } ferencd@0: ferencd@0: void testAUTHENTICATE() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::AUTHENTICATE("saslmechanism"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "AUTHENTICATE saslmechanism", cmd->getText()); ferencd@0: } ferencd@0: ferencd@0: void testAUTHENTICATE_InitialResponse() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::AUTHENTICATE("saslmechanism", "initial-response"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "AUTHENTICATE saslmechanism initial-response", cmd->getText()); ferencd@0: } ferencd@0: ferencd@0: void testLIST() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::LIST("ref-name", "mailbox-name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "LIST ref-name mailbox-name", cmd->getText()); ferencd@0: ferencd@0: vmime::shared_ptr cmdQuote = IMAPCommand::LIST("ref name", "mailbox-name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdQuote); ferencd@0: VASSERT_EQ("Text", "LIST \"ref name\" mailbox-name", cmdQuote->getText()); ferencd@0: } ferencd@0: ferencd@0: void testSELECT() ferencd@0: { ferencd@0: std::vector params; ferencd@0: params.push_back("param-1"); ferencd@0: params.push_back("param-2"); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdRO = IMAPCommand::SELECT ferencd@0: (/* readOnly */ true, "mailbox-name", std::vector ()); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdRO); ferencd@0: VASSERT_EQ("Text", "EXAMINE mailbox-name", cmdRO->getText()); ferencd@0: ferencd@0: vmime::shared_ptr cmdROQuote = IMAPCommand::SELECT ferencd@0: (/* readOnly */ true, "mailbox name", std::vector ()); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdROQuote); ferencd@0: VASSERT_EQ("Text", "EXAMINE \"mailbox name\"", cmdROQuote->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdRW = IMAPCommand::SELECT ferencd@0: (/* readOnly */ false, "mailbox-name", std::vector ()); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdRW); ferencd@0: VASSERT_EQ("Text", "SELECT mailbox-name", cmdRW->getText()); ferencd@0: ferencd@0: vmime::shared_ptr cmdRWParams = IMAPCommand::SELECT ferencd@0: (/* readOnly */ false, "mailbox-name", params); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdRWParams); ferencd@0: VASSERT_EQ("Text", "SELECT mailbox-name (param-1 param-2)", cmdRWParams->getText()); ferencd@0: ferencd@0: vmime::shared_ptr cmdRWQuote = IMAPCommand::SELECT ferencd@0: (/* readOnly */ false, "mailbox name", std::vector ()); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdRWQuote); ferencd@0: VASSERT_EQ("Text", "SELECT \"mailbox name\"", cmdRWQuote->getText()); ferencd@0: } ferencd@0: ferencd@0: void testSTATUS() ferencd@0: { ferencd@0: std::vector attribs; ferencd@0: attribs.push_back("attrib-1"); ferencd@0: attribs.push_back("attrib-2"); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmd = ferencd@0: IMAPCommand::STATUS("mailbox-name", attribs); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "STATUS mailbox-name (attrib-1 attrib-2)", cmd->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdQuote = ferencd@0: IMAPCommand::STATUS("mailbox name", attribs); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdQuote); ferencd@0: VASSERT_EQ("Text", "STATUS \"mailbox name\" (attrib-1 attrib-2)", cmdQuote->getText()); ferencd@0: } ferencd@0: ferencd@0: void testCREATE() ferencd@0: { ferencd@0: std::vector params; ferencd@0: params.push_back("param-1"); ferencd@0: params.push_back("param-2"); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmd = ferencd@0: IMAPCommand::CREATE("mailbox-name", params); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "CREATE mailbox-name (param-1 param-2)", cmd->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdQuote = ferencd@0: IMAPCommand::CREATE("mailbox name", params); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdQuote); ferencd@0: VASSERT_EQ("Text", "CREATE \"mailbox name\" (param-1 param-2)", cmdQuote->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdNoParam = ferencd@0: IMAPCommand::CREATE("mailbox-name", std::vector ()); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdNoParam); ferencd@0: VASSERT_EQ("Text", "CREATE mailbox-name", cmdNoParam->getText()); ferencd@0: } ferencd@0: ferencd@0: void testDELETE() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = ferencd@0: IMAPCommand::DELETE("mailbox-name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "DELETE mailbox-name", cmd->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdQuote = ferencd@0: IMAPCommand::DELETE("mailbox name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdQuote); ferencd@0: VASSERT_EQ("Text", "DELETE \"mailbox name\"", cmdQuote->getText()); ferencd@0: } ferencd@0: ferencd@0: void testRENAME() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = ferencd@0: IMAPCommand::RENAME("mailbox-name", "new-mailbox-name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "RENAME mailbox-name new-mailbox-name", cmd->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdQuote = ferencd@0: IMAPCommand::RENAME("mailbox name", "new mailbox name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdQuote); ferencd@0: VASSERT_EQ("Text", "RENAME \"mailbox name\" \"new mailbox name\"", cmdQuote->getText()); ferencd@0: } ferencd@0: ferencd@0: void testFETCH() ferencd@0: { ferencd@0: std::vector params; ferencd@0: params.push_back("param-1"); ferencd@0: params.push_back("param-2"); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdNum = ferencd@0: IMAPCommand::FETCH(vmime::net::messageSet::byNumber(42), params); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdNum); ferencd@0: VASSERT_EQ("Text", "FETCH 42 (param-1 param-2)", cmdNum->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdNums = ferencd@0: IMAPCommand::FETCH(vmime::net::messageSet::byNumber(42, 47), params); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdNums); ferencd@0: VASSERT_EQ("Text", "FETCH 42:47 (param-1 param-2)", cmdNums->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdUID = ferencd@0: IMAPCommand::FETCH(vmime::net::messageSet::byUID(42), params); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdUID); ferencd@0: VASSERT_EQ("Text", "UID FETCH 42 (param-1 param-2)", cmdUID->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdUIDs = ferencd@0: IMAPCommand::FETCH(vmime::net::messageSet::byUID(42, 47), params); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdUIDs); ferencd@0: VASSERT_EQ("Text", "UID FETCH 42:47 (param-1 param-2)", cmdUIDs->getText()); ferencd@0: } ferencd@0: ferencd@0: void testSTORE() ferencd@0: { ferencd@0: std::vector flags; ferencd@0: flags.push_back("flag-1"); ferencd@0: flags.push_back("flag-2"); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdNum = IMAPCommand::STORE ferencd@0: (vmime::net::messageSet::byNumber(42), vmime::net::message::FLAG_MODE_SET, flags); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdNum); ferencd@0: VASSERT_EQ("Text", "STORE 42 FLAGS (flag-1 flag-2)", cmdNum->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdNums = IMAPCommand::STORE ferencd@0: (vmime::net::messageSet::byNumber(42, 47), vmime::net::message::FLAG_MODE_SET, flags); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdNums); ferencd@0: VASSERT_EQ("Text", "STORE 42:47 FLAGS (flag-1 flag-2)", cmdNums->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdUID = IMAPCommand::STORE ferencd@0: (vmime::net::messageSet::byUID(42), vmime::net::message::FLAG_MODE_SET, flags); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdUID); ferencd@0: VASSERT_EQ("Text", "UID STORE 42 FLAGS (flag-1 flag-2)", cmdUID->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdUIDs = IMAPCommand::STORE ferencd@0: (vmime::net::messageSet::byUID(42, 47), vmime::net::message::FLAG_MODE_SET, flags); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdUIDs); ferencd@0: VASSERT_EQ("Text", "UID STORE 42:47 FLAGS (flag-1 flag-2)", cmdUIDs->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdAdd = IMAPCommand::STORE ferencd@0: (vmime::net::messageSet::byUID(42, 47), vmime::net::message::FLAG_MODE_ADD, flags); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdAdd); ferencd@0: VASSERT_EQ("Text", "UID STORE 42:47 +FLAGS (flag-1 flag-2)", cmdAdd->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdRem = IMAPCommand::STORE ferencd@0: (vmime::net::messageSet::byUID(42, 47), vmime::net::message::FLAG_MODE_REMOVE, flags); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdRem); ferencd@0: VASSERT_EQ("Text", "UID STORE 42:47 -FLAGS (flag-1 flag-2)", cmdRem->getText()); ferencd@0: } ferencd@0: ferencd@0: void testAPPEND() ferencd@0: { ferencd@0: std::vector flags; ferencd@0: flags.push_back("flag-1"); ferencd@0: flags.push_back("flag-2"); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmd = ferencd@0: IMAPCommand::APPEND("mailbox-name", flags, /* date */ NULL, 1234); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "APPEND mailbox-name (flag-1 flag-2) {1234}", cmd->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdQuote = ferencd@0: IMAPCommand::APPEND("mailbox name", flags, /* date */ NULL, 1234); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdQuote); ferencd@0: VASSERT_EQ("Text", "APPEND \"mailbox name\" (flag-1 flag-2) {1234}", cmdQuote->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::datetime date(2014, 3, 15, 23, 11, 47, vmime::datetime::GMT2); ferencd@0: vmime::shared_ptr cmdDate = ferencd@0: IMAPCommand::APPEND("mailbox name", flags, &date, 1234); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdDate); ferencd@0: VASSERT_EQ("Text", "APPEND \"mailbox name\" (flag-1 flag-2) \"15-Mar-2014 23:11:47 +0200\" {1234}", cmdDate->getText()); ferencd@0: } ferencd@0: ferencd@0: void testCOPY() ferencd@0: { ferencd@0: vmime::shared_ptr cmdNum = ferencd@0: IMAPCommand::COPY(vmime::net::messageSet::byNumber(42), "mailbox-name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdNum); ferencd@0: VASSERT_EQ("Text", "COPY 42 mailbox-name", cmdNum->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdNums = ferencd@0: IMAPCommand::COPY(vmime::net::messageSet::byNumber(42, 47), "mailbox-name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdNums); ferencd@0: VASSERT_EQ("Text", "COPY 42:47 mailbox-name", cmdNums->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdUID = ferencd@0: IMAPCommand::COPY(vmime::net::messageSet::byUID(42), "mailbox-name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdUID); ferencd@0: VASSERT_EQ("Text", "UID COPY 42 mailbox-name", cmdUID->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdUIDs = ferencd@0: IMAPCommand::COPY(vmime::net::messageSet::byUID(42, 47), "mailbox-name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdUIDs); ferencd@0: VASSERT_EQ("Text", "UID COPY 42:47 mailbox-name", cmdUIDs->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::shared_ptr cmdQuote = ferencd@0: IMAPCommand::COPY(vmime::net::messageSet::byNumber(42, 47), "mailbox name"); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdQuote); ferencd@0: VASSERT_EQ("Text", "COPY 42:47 \"mailbox name\"", cmdQuote->getText()); ferencd@0: } ferencd@0: ferencd@0: void testSEARCH() ferencd@0: { ferencd@0: std::vector searchKeys; ferencd@0: searchKeys.push_back("search-key-1"); ferencd@0: searchKeys.push_back("search-key-2"); ferencd@0: ferencd@0: vmime::shared_ptr cmd = ferencd@0: IMAPCommand::SEARCH(searchKeys, /* charset */ NULL); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "SEARCH search-key-1 search-key-2", cmd->getText()); ferencd@0: ferencd@0: ferencd@0: vmime::charset cset("test-charset"); ferencd@0: ferencd@0: vmime::shared_ptr cmdCset = ferencd@0: IMAPCommand::SEARCH(searchKeys, &cset); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmdCset); ferencd@0: VASSERT_EQ("Text", "SEARCH CHARSET test-charset search-key-1 search-key-2", cmdCset->getText()); ferencd@0: } ferencd@0: ferencd@0: void testSTARTTLS() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::STARTTLS(); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "STARTTLS", cmd->getText()); ferencd@0: } ferencd@0: ferencd@0: void testCAPABILITY() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::CAPABILITY(); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "CAPABILITY", cmd->getText()); ferencd@0: } ferencd@0: ferencd@0: void testNOOP() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::NOOP(); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "NOOP", cmd->getText()); ferencd@0: } ferencd@0: ferencd@0: void testEXPUNGE() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::EXPUNGE(); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "EXPUNGE", cmd->getText()); ferencd@0: } ferencd@0: ferencd@0: void testCLOSE() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::CLOSE(); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "CLOSE", cmd->getText()); ferencd@0: } ferencd@0: ferencd@0: void testLOGOUT() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::LOGOUT(); ferencd@0: ferencd@0: VASSERT_NOT_NULL("Not null", cmd); ferencd@0: VASSERT_EQ("Text", "LOGOUT", cmd->getText()); ferencd@0: } ferencd@0: ferencd@0: void testSend() ferencd@0: { ferencd@0: vmime::shared_ptr cmd = IMAPCommand::createCommand("MY_COMMAND param1 param2"); ferencd@0: ferencd@0: vmime::shared_ptr sess = ferencd@0: vmime::make_shared (); ferencd@0: ferencd@0: vmime::shared_ptr auth = ferencd@0: vmime::make_shared (); ferencd@0: ferencd@0: vmime::shared_ptr store = ferencd@0: vmime::make_shared (sess, auth, /* secured */ false); ferencd@0: ferencd@0: vmime::shared_ptr conn = ferencd@0: vmime::make_shared (store, auth); ferencd@0: ferencd@0: vmime::shared_ptr sok = vmime::make_shared (); ferencd@0: conn->setSocket(sok); ferencd@0: ferencd@0: cmd->send(conn); ferencd@0: ferencd@0: vmime::string response; ferencd@0: sok->localReceive(response); ferencd@0: ferencd@0: VASSERT_EQ("Sent buffer", vmime::string(*conn->getTag()) + " MY_COMMAND param1 param2\r\n", response); ferencd@0: } ferencd@0: ferencd@0: VMIME_TEST_SUITE_END