annotate 3rdparty/vmime/tests/net/smtp/SMTPCommandTest.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-2013 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/smtp/SMTPCommand.hpp"
ferencd@0 27
ferencd@0 28
ferencd@0 29 using namespace vmime::net::smtp;
ferencd@0 30
ferencd@0 31
ferencd@0 32 VMIME_TEST_SUITE_BEGIN(SMTPCommandTest)
ferencd@0 33
ferencd@0 34 VMIME_TEST_LIST_BEGIN
ferencd@0 35 VMIME_TEST(testCreateCommand)
ferencd@0 36 VMIME_TEST(testCreateCommandParams)
ferencd@0 37 VMIME_TEST(testHELO)
ferencd@0 38 VMIME_TEST(testEHLO)
ferencd@0 39 VMIME_TEST(testAUTH)
ferencd@0 40 VMIME_TEST(testAUTH_InitialResponse)
ferencd@0 41 VMIME_TEST(testSTARTTLS)
ferencd@0 42 VMIME_TEST(testMAIL)
ferencd@0 43 VMIME_TEST(testMAIL_Encoded)
ferencd@0 44 VMIME_TEST(testMAIL_UTF8)
ferencd@0 45 VMIME_TEST(testMAIL_SIZE)
ferencd@0 46 VMIME_TEST(testMAIL_SIZE_UTF8)
ferencd@0 47 VMIME_TEST(testRCPT)
ferencd@0 48 VMIME_TEST(testRCPT_Encoded)
ferencd@0 49 VMIME_TEST(testRCPT_UTF8)
ferencd@0 50 VMIME_TEST(testRSET)
ferencd@0 51 VMIME_TEST(testDATA)
ferencd@0 52 VMIME_TEST(testBDAT)
ferencd@0 53 VMIME_TEST(testNOOP)
ferencd@0 54 VMIME_TEST(testQUIT)
ferencd@0 55 VMIME_TEST(testWriteToSocket)
ferencd@0 56 VMIME_TEST_LIST_END
ferencd@0 57
ferencd@0 58
ferencd@0 59 void testCreateCommand()
ferencd@0 60 {
ferencd@0 61 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::createCommand("MY_COMMAND");
ferencd@0 62
ferencd@0 63 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 64 VASSERT_EQ("Text", "MY_COMMAND", cmd->getText());
ferencd@0 65 }
ferencd@0 66
ferencd@0 67 void testCreateCommandParams()
ferencd@0 68 {
ferencd@0 69 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::createCommand("MY_COMMAND param1 param2");
ferencd@0 70
ferencd@0 71 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 72 VASSERT_EQ("Text", "MY_COMMAND param1 param2", cmd->getText());
ferencd@0 73 }
ferencd@0 74
ferencd@0 75 void testHELO()
ferencd@0 76 {
ferencd@0 77 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::HELO("hostname");
ferencd@0 78
ferencd@0 79 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 80 VASSERT_EQ("Text", "HELO hostname", cmd->getText());
ferencd@0 81 }
ferencd@0 82
ferencd@0 83 void testEHLO()
ferencd@0 84 {
ferencd@0 85 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::EHLO("hostname");
ferencd@0 86
ferencd@0 87 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 88 VASSERT_EQ("Text", "EHLO hostname", cmd->getText());
ferencd@0 89 }
ferencd@0 90
ferencd@0 91 void testAUTH()
ferencd@0 92 {
ferencd@0 93 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::AUTH("saslmechanism");
ferencd@0 94
ferencd@0 95 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 96 VASSERT_EQ("Text", "AUTH saslmechanism", cmd->getText());
ferencd@0 97 }
ferencd@0 98
ferencd@0 99 void testAUTH_InitialResponse()
ferencd@0 100 {
ferencd@0 101 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::AUTH("saslmechanism", "initial-response");
ferencd@0 102
ferencd@0 103 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 104 VASSERT_EQ("Text", "AUTH saslmechanism initial-response", cmd->getText());
ferencd@0 105 }
ferencd@0 106
ferencd@0 107 void testSTARTTLS()
ferencd@0 108 {
ferencd@0 109 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::STARTTLS();
ferencd@0 110
ferencd@0 111 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 112 VASSERT_EQ("Text", "STARTTLS", cmd->getText());
ferencd@0 113 }
ferencd@0 114
ferencd@0 115 void testMAIL()
ferencd@0 116 {
ferencd@0 117 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::MAIL(vmime::mailbox("me@vmime.org"), false);
ferencd@0 118
ferencd@0 119 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 120 VASSERT_EQ("Text", "MAIL FROM:<me@vmime.org>", cmd->getText());
ferencd@0 121 }
ferencd@0 122
ferencd@0 123 void testMAIL_Encoded()
ferencd@0 124 {
ferencd@0 125 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::MAIL
ferencd@0 126 (vmime::mailbox(vmime::emailAddress("mailtest", "例え.テスト")), false);
ferencd@0 127
ferencd@0 128 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 129 VASSERT_EQ("Text", "MAIL FROM:<mailtest@xn--r8jz45g.xn--zckzah>", cmd->getText());
ferencd@0 130 }
ferencd@0 131
ferencd@0 132 void testMAIL_UTF8()
ferencd@0 133 {
ferencd@0 134 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::MAIL
ferencd@0 135 (vmime::mailbox(vmime::emailAddress("mailtest", "例え.テスト")), true);
ferencd@0 136
ferencd@0 137 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 138 VASSERT_EQ("Text", "MAIL FROM:<mailtest@例え.テスト> SMTPUTF8", cmd->getText());
ferencd@0 139 }
ferencd@0 140
ferencd@0 141 void testMAIL_SIZE()
ferencd@0 142 {
ferencd@0 143 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::MAIL
ferencd@0 144 (vmime::mailbox("me@vmime.org"), false, 123456789);
ferencd@0 145
ferencd@0 146 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 147 VASSERT_EQ("Text", "MAIL FROM:<me@vmime.org> SIZE=123456789", cmd->getText());
ferencd@0 148 }
ferencd@0 149
ferencd@0 150 void testMAIL_SIZE_UTF8()
ferencd@0 151 {
ferencd@0 152 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::MAIL
ferencd@0 153 (vmime::mailbox(vmime::emailAddress("mailtest", "例え.テスト")), true, 123456789);
ferencd@0 154
ferencd@0 155 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 156 VASSERT_EQ("Text", "MAIL FROM:<mailtest@例え.テスト> SMTPUTF8 SIZE=123456789", cmd->getText());
ferencd@0 157 }
ferencd@0 158
ferencd@0 159 void testRCPT()
ferencd@0 160 {
ferencd@0 161 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::RCPT(vmime::mailbox("someone@vmime.org"), false);
ferencd@0 162
ferencd@0 163 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 164 VASSERT_EQ("Text", "RCPT TO:<someone@vmime.org>", cmd->getText());
ferencd@0 165 }
ferencd@0 166
ferencd@0 167 void testRCPT_Encoded()
ferencd@0 168 {
ferencd@0 169 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::RCPT
ferencd@0 170 (vmime::mailbox(vmime::emailAddress("mailtest", "例え.テスト")), false);
ferencd@0 171
ferencd@0 172 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 173 VASSERT_EQ("Text", "RCPT TO:<mailtest@xn--r8jz45g.xn--zckzah>", cmd->getText());
ferencd@0 174 }
ferencd@0 175
ferencd@0 176 void testRCPT_UTF8()
ferencd@0 177 {
ferencd@0 178 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::RCPT
ferencd@0 179 (vmime::mailbox(vmime::emailAddress("mailtest", "例え.テスト")), true);
ferencd@0 180
ferencd@0 181 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 182 VASSERT_EQ("Text", "RCPT TO:<mailtest@例え.テスト>", cmd->getText());
ferencd@0 183 }
ferencd@0 184
ferencd@0 185 void testRSET()
ferencd@0 186 {
ferencd@0 187 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::RSET();
ferencd@0 188
ferencd@0 189 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 190 VASSERT_EQ("Text", "RSET", cmd->getText());
ferencd@0 191 }
ferencd@0 192
ferencd@0 193 void testDATA()
ferencd@0 194 {
ferencd@0 195 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::DATA();
ferencd@0 196
ferencd@0 197 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 198 VASSERT_EQ("Text", "DATA", cmd->getText());
ferencd@0 199 }
ferencd@0 200
ferencd@0 201 void testBDAT()
ferencd@0 202 {
ferencd@0 203 vmime::shared_ptr <SMTPCommand> cmd1 = SMTPCommand::BDAT(12345, false);
ferencd@0 204
ferencd@0 205 VASSERT_NOT_NULL("Not null", cmd1);
ferencd@0 206 VASSERT_EQ("Text", "BDAT 12345", cmd1->getText());
ferencd@0 207
ferencd@0 208 vmime::shared_ptr <SMTPCommand> cmd2 = SMTPCommand::BDAT(67890, true);
ferencd@0 209
ferencd@0 210 VASSERT_NOT_NULL("Not null", cmd2);
ferencd@0 211 VASSERT_EQ("Text", "BDAT 67890 LAST", cmd2->getText());
ferencd@0 212 }
ferencd@0 213
ferencd@0 214 void testNOOP()
ferencd@0 215 {
ferencd@0 216 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::NOOP();
ferencd@0 217
ferencd@0 218 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 219 VASSERT_EQ("Text", "NOOP", cmd->getText());
ferencd@0 220 }
ferencd@0 221
ferencd@0 222 void testQUIT()
ferencd@0 223 {
ferencd@0 224 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::QUIT();
ferencd@0 225
ferencd@0 226 VASSERT_NOT_NULL("Not null", cmd);
ferencd@0 227 VASSERT_EQ("Text", "QUIT", cmd->getText());
ferencd@0 228 }
ferencd@0 229
ferencd@0 230 void testWriteToSocket()
ferencd@0 231 {
ferencd@0 232 vmime::shared_ptr <SMTPCommand> cmd = SMTPCommand::createCommand("MY_COMMAND param1 param2");
ferencd@0 233
ferencd@0 234 vmime::shared_ptr <vmime::net::tracer> tracer;
ferencd@0 235 vmime::shared_ptr <testSocket> sok = vmime::make_shared <testSocket>();
ferencd@0 236
ferencd@0 237 cmd->writeToSocket(sok, tracer);
ferencd@0 238
ferencd@0 239 vmime::string response;
ferencd@0 240 sok->localReceive(response);
ferencd@0 241
ferencd@0 242 VASSERT_EQ("Sent buffer", "MY_COMMAND param1 param2\r\n", response);
ferencd@0 243 }
ferencd@0 244
ferencd@0 245 VMIME_TEST_SUITE_END