summaryrefslogtreecommitdiff
path: root/test/FtpConnectionTest.cc
diff options
context:
space:
mode:
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