summaryrefslogtreecommitdiff
path: root/test/FtpConnectionTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-07-30 14:45:35 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-07-30 14:45:35 +0000
commit7958ce43662d8dd070f2ca71c06ca630198568ef (patch)
tree023ab57b1c8f575ef3b55895447d9bba49474e26 /test/FtpConnectionTest.cc
parent20b7c8cd0e058ba74bc311c855db6111726276ef (diff)
2010-07-30 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added FTP EPSV and EPRT command support. aria2 issues these commands when address family of local socket is AF_INET6. * src/FtpConnection.cc * src/FtpConnection.h * src/FtpNegotiationCommand.cc * src/FtpNegotiationCommand.h * src/SocketCore.cc * src/SocketCore.h * test/FtpConnectionTest.cc
Diffstat (limited to 'test/FtpConnectionTest.cc')
-rw-r--r--test/FtpConnectionTest.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/FtpConnectionTest.cc b/test/FtpConnectionTest.cc
index 8390c461..25c93453 100644
--- a/test/FtpConnectionTest.cc
+++ b/test/FtpConnectionTest.cc
@@ -32,6 +32,7 @@ class FtpConnectionTest:public CppUnit::TestFixture {
CPPUNIT_TEST(testSendSize);
CPPUNIT_TEST(testReceiveSizeResponse);
CPPUNIT_TEST(testSendRetr);
+ CPPUNIT_TEST(testReceiveEpsvResponse);
CPPUNIT_TEST_SUITE_END();
private:
SharedHandle<SocketCore> serverSocket_;
@@ -85,6 +86,7 @@ public:
void testSendSize();
void testReceiveSizeResponse();
void testSendRetr();
+ void testReceiveEpsvResponse();
};
@@ -299,4 +301,33 @@ void FtpConnectionTest::testSendRetr()
std::string(&data[0], &data[len]));
}
+void FtpConnectionTest::testReceiveEpsvResponse()
+{
+ serverSocket_->writeData("229 Success (|||12000|)\r\n");
+ waitRead(clientSocket_);
+ uint16_t port = 0;
+ CPPUNIT_ASSERT_EQUAL((unsigned int)229, ftp_->receiveEpsvResponse(port));
+ CPPUNIT_ASSERT_EQUAL((uint16_t)12000, port);
+
+ serverSocket_->writeData("229 Success |||12000|)\r\n");
+ CPPUNIT_ASSERT_EQUAL((unsigned int)229, ftp_->receiveEpsvResponse(port));
+ CPPUNIT_ASSERT_EQUAL((uint16_t)0, port);
+
+ serverSocket_->writeData("229 Success (|||12000|\r\n");
+ CPPUNIT_ASSERT_EQUAL((unsigned int)229, ftp_->receiveEpsvResponse(port));
+ CPPUNIT_ASSERT_EQUAL((uint16_t)0, port);
+
+ serverSocket_->writeData("229 Success ()|||12000|\r\n");
+ CPPUNIT_ASSERT_EQUAL((unsigned int)229, ftp_->receiveEpsvResponse(port));
+ CPPUNIT_ASSERT_EQUAL((uint16_t)0, port);
+
+ serverSocket_->writeData("229 Success )(|||12000|)\r\n");
+ CPPUNIT_ASSERT_EQUAL((unsigned int)229, ftp_->receiveEpsvResponse(port));
+ CPPUNIT_ASSERT_EQUAL((uint16_t)0, port);
+
+ serverSocket_->writeData("229 Success )(||12000|)\r\n");
+ CPPUNIT_ASSERT_EQUAL((unsigned int)229, ftp_->receiveEpsvResponse(port));
+ CPPUNIT_ASSERT_EQUAL((uint16_t)0, port);
+}
+
} // namespace aria2