void FTPStreamFactoryTest::testMissingPasswordProvider() { FTPStreamFactory::setPasswordProvider(0); DialogServer server; server.addResponse("220 localhost FTP ready"); server.addResponse("221 Good bye"); URI uri; uri.setScheme("ftp"); uri.setHost("localhost"); uri.setPort(server.port()); uri.setPath("/test.txt;type=a"); uri.setUserInfo("user"); try { FTPStreamFactory sf; std::auto_ptr<std::istream> pStr(sf.open(uri)); fail("no password provider - must throw"); } catch (FTPException&) { } }
void FTPStreamFactoryTest::testPasswordProvider() { static TestPasswordProvider tpp; FTPStreamFactory::setPasswordProvider(&tpp); DialogServer server; server.addResponse("220 localhost FTP ready"); server.addResponse("331 Password required"); server.addResponse("230 Welcome"); server.addResponse("200 Type set to I"); server.addResponse("200 Type set to A"); DialogServer dataServer(false); dataServer.addResponse("line1\r\nline2"); std::ostringstream epsv; epsv << "229 Entering Extended Passive Mode (|||" << dataServer.port() << "|)"; server.addResponse(epsv.str()); server.addResponse("150 sending data\r\n226 Transfer complete"); server.addResponse("221 Good bye"); URI uri; uri.setScheme("ftp"); uri.setHost("localhost"); uri.setPort(server.port()); uri.setPath("/test.txt;type=a"); uri.setUserInfo("user"); FTPStreamFactory sf; std::auto_ptr<std::istream> pStr(sf.open(uri)); std::ostringstream dataStr; StreamCopier::copyStream(*pStr.get(), dataStr); pStr.reset(); std::string s(dataStr.str()); assert (s == "line1\r\nline2\r\n"); }