summaryrefslogtreecommitdiff
path: root/test/AuthConfigFactoryTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-10-30 12:48:01 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-10-30 12:48:01 +0000
commit6b7df851d3d4f237c17528310e46bd2ffb91ba8f (patch)
tree600c87920f37dd1790df66c59ff3c11119d9405f /test/AuthConfigFactoryTest.cc
parentf3f8cc593c39e0b63958faf2c1271998c27f68f9 (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.cc124
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());
+}