diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-10-30 12:48:01 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-10-30 12:48:01 +0000 |
| commit | 6b7df851d3d4f237c17528310e46bd2ffb91ba8f (patch) | |
| tree | 600c87920f37dd1790df66c59ff3c11119d9405f /test/AuthConfigFactoryTest.cc | |
| parent | f3f8cc593c39e0b63958faf2c1271998c27f68f9 (diff) | |
2007-10-30 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added ftp://USER:PASSWD@Servername automatic parsing.
* src/Request.{h, cc}: Removed AuthResolvers. Added _username
and
_password. Recognize username and password in URI.
* src/main.cc: Use AuthConfigFactory instead of RequestFactory.
* src/RequestGroup.cc: Use AuthConfigFactory instead of
RequestFactory.
* src/RequestFactory.{h, cc}: Removed.
* src/AuthConfigFactory.{h, cc}: New class.
* src/FtpConnection.cc: Use AuthConfigFactory.
* src/HttpRequest.cc: Use AuthConfigFactory.
* test/HttpRequestTest.cc: Updated.
* test/RequestTest.cc: Updated.
* test/AuthConfigFactoryTest.cc: New class.
* test/RequestFactoryTest.cc: Removed.
Diffstat (limited to 'test/AuthConfigFactoryTest.cc')
| -rw-r--r-- | test/AuthConfigFactoryTest.cc | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/test/AuthConfigFactoryTest.cc b/test/AuthConfigFactoryTest.cc new file mode 100644 index 00000000..57233e60 --- /dev/null +++ b/test/AuthConfigFactoryTest.cc @@ -0,0 +1,124 @@ +#include "AuthConfigFactory.h" +#include "Netrc.h" +#include "prefs.h" +#include "Request.h" +#include "AuthConfig.h" +#include "Option.h" +#include <cppunit/extensions/HelperMacros.h> + +class AuthConfigFactoryTest:public CppUnit::TestFixture { + + CPPUNIT_TEST_SUITE(AuthConfigFactoryTest); + CPPUNIT_TEST(testCreateAuthConfig_http); + CPPUNIT_TEST(testCreateAuthConfigForHttpProxy); + CPPUNIT_TEST(testCreateAuthConfig_ftp); + CPPUNIT_TEST_SUITE_END(); + +public: + void testCreateAuthConfig_http(); + void testCreateAuthConfigForHttpProxy(); + void testCreateAuthConfig_ftp(); +}; + + +CPPUNIT_TEST_SUITE_REGISTRATION( AuthConfigFactoryTest ); + +void AuthConfigFactoryTest::testCreateAuthConfig_http() +{ + RequestHandle req = new Request(); + req->setUrl("http://localhost/download/aria2-1.0.0.tar.bz2"); + + Option option; + option.put(PREF_NO_NETRC, V_FALSE); + + AuthConfigFactory factory(&option); + + // without auth info + CPPUNIT_ASSERT_EQUAL(string(":"), + factory.createAuthConfig(req)->getAuthText()); + + // with Netrc: disabled by default + NetrcHandle netrc = new Netrc(); + netrc->addAuthenticator(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount")); + factory.setNetrc(netrc); + CPPUNIT_ASSERT_EQUAL(string(":"), + factory.createAuthConfig(req)->getAuthText()); + + // with Netrc + user defined + option.put(PREF_HTTP_USER, "userDefinedUser"); + option.put(PREF_HTTP_PASSWD, "userDefinedPassword"); + CPPUNIT_ASSERT_EQUAL(string("userDefinedUser:userDefinedPassword"), + factory.createAuthConfig(req)->getAuthText()); + + // username and password in URI: disabled by default. + req->setUrl("http://aria2user:aria2password@localhost/download/aria2-1.0.0.tar.bz2"); + CPPUNIT_ASSERT_EQUAL(string("userDefinedUser:userDefinedPassword"), + factory.createAuthConfig(req)->getAuthText()); + +// CPPUNIT_ASSERT_EQUAL(string("aria2user:aria2password"), +// factory.createAuthConfig(req)->getAuthText()); +} + +void AuthConfigFactoryTest::testCreateAuthConfigForHttpProxy() +{ + RequestHandle req = new Request(); + req->setUrl("http://localhost/download/aria2-1.0.0.tar.bz2"); + // with Netrc + NetrcHandle netrc = new Netrc(); + netrc->addAuthenticator(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount")); + + Option option; + option.put(PREF_NO_NETRC, V_FALSE); + + AuthConfigFactory factory(&option); + factory.setNetrc(netrc); + + // netrc is not used in http proxy auth + CPPUNIT_ASSERT_EQUAL(string(":"), + factory.createAuthConfigForHttpProxy(req)->getAuthText()); + + option.put(PREF_HTTP_PROXY_USER, "userDefinedUser"); + option.put(PREF_HTTP_PROXY_PASSWD, "userDefinedPassword"); + CPPUNIT_ASSERT_EQUAL(string("userDefinedUser:userDefinedPassword"), + factory.createAuthConfigForHttpProxy(req)->getAuthText()); + +} + +void AuthConfigFactoryTest::testCreateAuthConfig_ftp() +{ + RequestHandle req = new Request(); + req->setUrl("ftp://localhost/download/aria2-1.0.0.tar.bz2"); + + Option option; + option.put(PREF_NO_NETRC, V_FALSE); + + AuthConfigFactory factory(&option); + + // without auth info + CPPUNIT_ASSERT_EQUAL(string("anonymous:ARIA2USER@"), + factory.createAuthConfig(req)->getAuthText()); + + // with Netrc + NetrcHandle netrc = new Netrc(); + netrc->addAuthenticator(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount")); + factory.setNetrc(netrc); + CPPUNIT_ASSERT_EQUAL(string("default:defaultpassword"), + factory.createAuthConfig(req)->getAuthText()); + + // disable Netrc + option.put(PREF_NO_NETRC, V_TRUE); + CPPUNIT_ASSERT_EQUAL(string("anonymous:ARIA2USER@"), + factory.createAuthConfig(req)->getAuthText()); + + // with Netrc + user defined + option.put(PREF_NO_NETRC, V_FALSE); + option.put(PREF_FTP_USER, "userDefinedUser"); + option.put(PREF_FTP_PASSWD, "userDefinedPassword"); + CPPUNIT_ASSERT_EQUAL(string("userDefinedUser:userDefinedPassword"), + factory.createAuthConfig(req)->getAuthText()); + + // username and password in URI: disabled by default. + req->setUrl("ftp://aria2user:aria2password@localhost/download/aria2-1.0.0.tar.bz2"); + CPPUNIT_ASSERT_EQUAL(string("aria2user:aria2password"), + factory.createAuthConfig(req)->getAuthText()); +} |
