summaryrefslogtreecommitdiff
path: root/test
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
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')
-rw-r--r--test/AuthConfigFactoryTest.cc124
-rw-r--r--test/HttpRequestTest.cc103
-rw-r--r--test/Makefile.am2
-rw-r--r--test/Makefile.in8
-rw-r--r--test/RequestFactoryTest.cc128
-rw-r--r--test/RequestGroupManTest.cc26
-rw-r--r--test/RequestTest.cc129
7 files changed, 240 insertions, 280 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());
+}
diff --git a/test/HttpRequestTest.cc b/test/HttpRequestTest.cc
index 836b7dd9..df79b514 100644
--- a/test/HttpRequestTest.cc
+++ b/test/HttpRequestTest.cc
@@ -1,6 +1,6 @@
#include "HttpRequest.h"
#include "prefs.h"
-#include "RequestFactory.h"
+#include "AuthConfigFactory.h"
#include "PiecedSegment.h"
#include "Piece.h"
#include <cppunit/extensions/HelperMacros.h>
@@ -84,31 +84,30 @@ void HttpRequestTest::testGetEndByte()
void HttpRequestTest::testCreateRequest()
{
- SharedHandle<Option> option = new Option();
- option->put(PREF_HTTP_AUTH_ENABLED, V_FALSE);
- option->put(PREF_HTTP_PROXY_ENABLED, V_FALSE);
- option->put(PREF_HTTP_PROXY_METHOD, V_TUNNEL);
- option->put(PREF_HTTP_PROXY_AUTH_ENABLED, V_FALSE);
- option->put(PREF_HTTP_USER, "aria2user");
- option->put(PREF_HTTP_PASSWD, "aria2passwd");
- option->put(PREF_HTTP_PROXY_USER, "aria2proxyuser");
- option->put(PREF_HTTP_PROXY_PASSWD, "aria2proxypasswd");
- RequestFactory requestFactory;
- requestFactory.setOption(option.get());
-
- RequestHandle request = requestFactory.createRequest();
+ Option option;
+ option.put(PREF_HTTP_AUTH_ENABLED, V_FALSE);
+ option.put(PREF_HTTP_PROXY_ENABLED, V_FALSE);
+ option.put(PREF_HTTP_PROXY_METHOD, V_TUNNEL);
+ option.put(PREF_HTTP_PROXY_AUTH_ENABLED, V_FALSE);
+ option.put(PREF_HTTP_USER, "aria2user");
+ option.put(PREF_HTTP_PASSWD, "aria2passwd");
+ option.put(PREF_HTTP_PROXY_USER, "aria2proxyuser");
+ option.put(PREF_HTTP_PROXY_PASSWD, "aria2proxypasswd");
+
+ AuthConfigFactoryHandle authConfigFactory = new AuthConfigFactory(&option);
+ AuthConfigFactorySingleton::instance(authConfigFactory);
+ RequestHandle request = new Request();
request->setUrl("http://localhost:8080/archives/aria2-1.0.0.tar.bz2");
SegmentHandle segment = new PiecedSegment(1024, new Piece(0, 1024));
HttpRequest httpRequest;
-
httpRequest.setRequest(request);
httpRequest.setSegment(segment);
request->setKeepAlive(true);
-
+
string expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
"User-Agent: aria2\r\n"
"Accept: */*\r\n"
@@ -158,7 +157,7 @@ void HttpRequestTest::testCreateRequest()
"Cache-Control: no-cache\r\n"
"Range: bytes=1048576-2097151\r\n"
"\r\n";
-
+
CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest());
request->setKeepAlive(false);
@@ -183,9 +182,9 @@ void HttpRequestTest::testCreateRequest()
httpRequest.setSegment(segment);
// enable http auth
- option->put(PREF_HTTP_AUTH_ENABLED, V_TRUE);
-
- httpRequest.configure(option.get());
+ option.put(PREF_HTTP_AUTH_ENABLED, V_TRUE);
+
+ httpRequest.configure(&option);
expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
"User-Agent: aria2\r\n"
@@ -200,9 +199,9 @@ void HttpRequestTest::testCreateRequest()
CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest());
// enable http proxy auth
- option->put(PREF_HTTP_PROXY_AUTH_ENABLED, V_TRUE);
+ option.put(PREF_HTTP_PROXY_AUTH_ENABLED, V_TRUE);
- httpRequest.configure(option.get());
+ httpRequest.configure(&option);
expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
"User-Agent: aria2\r\n"
@@ -216,9 +215,9 @@ void HttpRequestTest::testCreateRequest()
CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest());
- option->put(PREF_HTTP_PROXY_ENABLED, V_TRUE);
+ option.put(PREF_HTTP_PROXY_ENABLED, V_TRUE);
- httpRequest.configure(option.get());
+ httpRequest.configure(&option);
expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
"User-Agent: aria2\r\n"
@@ -232,9 +231,9 @@ void HttpRequestTest::testCreateRequest()
CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest());
- option->put(PREF_HTTP_PROXY_METHOD, V_GET);
+ option.put(PREF_HTTP_PROXY_METHOD, V_GET);
- httpRequest.configure(option.get());
+ httpRequest.configure(&option);
expectedText = "GET http://localhost:8080/archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
"User-Agent: aria2\r\n"
@@ -268,9 +267,9 @@ void HttpRequestTest::testCreateRequest()
request->setKeepAlive(false);
- option->put(PREF_HTTP_PROXY_AUTH_ENABLED, V_FALSE);
+ option.put(PREF_HTTP_PROXY_AUTH_ENABLED, V_FALSE);
- httpRequest.configure(option.get());
+ httpRequest.configure(&option);
expectedText = "GET http://localhost:8080/archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
"User-Agent: aria2\r\n"
@@ -288,20 +287,20 @@ void HttpRequestTest::testCreateRequest()
void HttpRequestTest::testCreateRequest_ftp()
{
- SharedHandle<Option> option = new Option();
- option->put(PREF_HTTP_AUTH_ENABLED, V_FALSE);
- option->put(PREF_HTTP_PROXY_ENABLED, V_FALSE);
- option->put(PREF_HTTP_PROXY_METHOD, V_TUNNEL);
- option->put(PREF_HTTP_PROXY_AUTH_ENABLED, V_FALSE);
- option->put(PREF_HTTP_USER, "aria2user");
- option->put(PREF_HTTP_PASSWD, "aria2passwd");
- option->put(PREF_HTTP_PROXY_USER, "aria2proxyuser");
- option->put(PREF_HTTP_PROXY_PASSWD, "aria2proxypasswd");
-
- RequestFactory requestFactory;
- requestFactory.setOption(option.get());
-
- RequestHandle request = requestFactory.createRequest();
+ Option option;
+ option.put(PREF_HTTP_AUTH_ENABLED, V_FALSE);
+ option.put(PREF_HTTP_PROXY_ENABLED, V_FALSE);
+ option.put(PREF_HTTP_PROXY_METHOD, V_TUNNEL);
+ option.put(PREF_HTTP_PROXY_AUTH_ENABLED, V_FALSE);
+ option.put(PREF_HTTP_USER, "aria2user");
+ option.put(PREF_HTTP_PASSWD, "aria2passwd");
+ option.put(PREF_HTTP_PROXY_USER, "aria2proxyuser");
+ option.put(PREF_HTTP_PROXY_PASSWD, "aria2proxypasswd");
+
+ AuthConfigFactoryHandle authConfigFactory = new AuthConfigFactory(&option);
+ AuthConfigFactorySingleton::instance(authConfigFactory);
+
+ RequestHandle request = new Request();
request->setUrl("ftp://localhost:8080/archives/aria2-1.0.0.tar.bz2");
HttpRequest httpRequest;
@@ -309,7 +308,7 @@ void HttpRequestTest::testCreateRequest_ftp()
httpRequest.setRequest(request);
httpRequest.setSegment(segment);
- httpRequest.configure(option.get());
+ httpRequest.configure(&option);
string expectedText = "GET ftp://localhost:8080/archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
"User-Agent: aria2\r\n"
@@ -323,11 +322,11 @@ void HttpRequestTest::testCreateRequest_ftp()
CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest());
// How to enable HTTP proxy authorization in FTP download via HTTP proxy
- option->put(PREF_HTTP_PROXY_ENABLED, V_TRUE);
- option->put(PREF_HTTP_PROXY_METHOD, V_GET);
- option->put(PREF_HTTP_PROXY_AUTH_ENABLED, V_TRUE);
+ option.put(PREF_HTTP_PROXY_ENABLED, V_TRUE);
+ option.put(PREF_HTTP_PROXY_METHOD, V_GET);
+ option.put(PREF_HTTP_PROXY_AUTH_ENABLED, V_TRUE);
- httpRequest.configure(option.get());
+ httpRequest.configure(&option);
expectedText = "GET ftp://localhost:8080/archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
"User-Agent: aria2\r\n"
@@ -505,17 +504,17 @@ void HttpRequestTest::testIsRangeSatisfied()
void HttpRequestTest::testUserAgent()
{
- SharedHandle<Option> option = new Option();
- RequestFactory requestFactory;
- requestFactory.setOption(option.get());
+ Option option;
- RequestHandle request = requestFactory.createRequest();
+ AuthConfigFactoryHandle authConfigFactory = new AuthConfigFactory(&option);
+ AuthConfigFactorySingleton::instance(authConfigFactory);
+
+ RequestHandle request = new Request();
request->setUrl("http://localhost:8080/archives/aria2-1.0.0.tar.bz2");
SegmentHandle segment = new PiecedSegment(1024, new Piece(0, 1024));
HttpRequest httpRequest;
-
httpRequest.setRequest(request);
httpRequest.setSegment(segment);
httpRequest.setUserAgent("aria2 (Linux)");
diff --git a/test/Makefile.am b/test/Makefile.am
index e99d16d4..2f20d08b 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -22,7 +22,7 @@ aria2c_SOURCES = AllTest.cc\
HttpRequestTest.cc\
CookieBoxFactoryTest.cc\
RequestGroupManTest.cc\
- RequestFactoryTest.cc\
+ AuthConfigFactoryTest.cc\
NetrcAuthResolverTest.cc\
DefaultAuthResolverTest.cc\
OptionHandlerTest.cc\
diff --git a/test/Makefile.in b/test/Makefile.in
index 047dafae..aacf3788 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -121,7 +121,7 @@ am__aria2c_SOURCES_DIST = AllTest.cc PieceTest.cc \
FileUriListParserTest.cc StreamUriListParserTest.cc \
HttpHeaderProcessorTest.cc CookieBoxTest.cc RequestTest.cc \
CookieParserTest.cc HttpRequestTest.cc CookieBoxFactoryTest.cc \
- RequestGroupManTest.cc RequestFactoryTest.cc \
+ RequestGroupManTest.cc AuthConfigFactoryTest.cc \
NetrcAuthResolverTest.cc DefaultAuthResolverTest.cc \
OptionHandlerTest.cc SegmentManTest.cc BitfieldManTest.cc \
NetrcTest.cc SingletonHolderTest.cc HttpHeaderTest.cc \
@@ -215,7 +215,7 @@ am_aria2c_OBJECTS = AllTest.$(OBJEXT) PieceTest.$(OBJEXT) \
HttpHeaderProcessorTest.$(OBJEXT) CookieBoxTest.$(OBJEXT) \
RequestTest.$(OBJEXT) CookieParserTest.$(OBJEXT) \
HttpRequestTest.$(OBJEXT) CookieBoxFactoryTest.$(OBJEXT) \
- RequestGroupManTest.$(OBJEXT) RequestFactoryTest.$(OBJEXT) \
+ RequestGroupManTest.$(OBJEXT) AuthConfigFactoryTest.$(OBJEXT) \
NetrcAuthResolverTest.$(OBJEXT) \
DefaultAuthResolverTest.$(OBJEXT) OptionHandlerTest.$(OBJEXT) \
SegmentManTest.$(OBJEXT) BitfieldManTest.$(OBJEXT) \
@@ -422,7 +422,7 @@ aria2c_SOURCES = AllTest.cc PieceTest.cc DefaultPieceStorageTest.cc \
FileUriListParserTest.cc StreamUriListParserTest.cc \
HttpHeaderProcessorTest.cc CookieBoxTest.cc RequestTest.cc \
CookieParserTest.cc HttpRequestTest.cc CookieBoxFactoryTest.cc \
- RequestGroupManTest.cc RequestFactoryTest.cc \
+ RequestGroupManTest.cc AuthConfigFactoryTest.cc \
NetrcAuthResolverTest.cc DefaultAuthResolverTest.cc \
OptionHandlerTest.cc SegmentManTest.cc BitfieldManTest.cc \
NetrcTest.cc SingletonHolderTest.cc HttpHeaderTest.cc \
@@ -497,6 +497,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AllTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AlphaNumberDecoratorTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AnnounceListTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AuthConfigFactoryTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Base64Test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BitfieldManTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtAllowedFastMessageTest.Po@am__quote@
@@ -563,7 +564,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PeerMessageUtilTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PeerTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PieceTest.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RequestFactoryTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RequestGroupManTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RequestGroupTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RequestTest.Po@am__quote@
diff --git a/test/RequestFactoryTest.cc b/test/RequestFactoryTest.cc
deleted file mode 100644
index 69b7b9cc..00000000
--- a/test/RequestFactoryTest.cc
+++ /dev/null
@@ -1,128 +0,0 @@
-#include "RequestFactory.h"
-#include "prefs.h"
-#include "NetrcAuthResolver.h"
-#include "DefaultAuthResolver.h"
-#include <cppunit/extensions/HelperMacros.h>
-
-using namespace std;
-
-class RequestFactoryTest : public CppUnit::TestFixture {
-
- CPPUNIT_TEST_SUITE(RequestFactoryTest);
- CPPUNIT_TEST(testCreateHttpAuthResolver_netrc);
- CPPUNIT_TEST(testCreateHttpAuthResolver_def);
- CPPUNIT_TEST(testCreateFtpAuthResolver_netrc);
- CPPUNIT_TEST(testCreateFtpAuthResolver_def);
- CPPUNIT_TEST(testCreateHttpProxyAuthResolver_netrc);
- CPPUNIT_TEST(testCreateHttpProxyAuthResolver_def);
- CPPUNIT_TEST_SUITE_END();
-private:
- NetrcHandle _netrc;
- SharedHandle<Option> _option;
- RequestFactoryHandle _factory;
-public:
- void setUp()
- {
- _netrc = new Netrc();
- _option = new Option();
- _factory = new RequestFactory();
- _factory->setNetrc(_netrc);
- _factory->setOption(_option.get());
- }
-
- void testCreateHttpAuthResolver_netrc();
- void testCreateHttpAuthResolver_def();
- void testCreateFtpAuthResolver_netrc();
- void testCreateFtpAuthResolver_def();
- void testCreateHttpProxyAuthResolver_netrc();
- void testCreateHttpProxyAuthResolver_def();
-};
-
-
-CPPUNIT_TEST_SUITE_REGISTRATION( RequestFactoryTest );
-
-void RequestFactoryTest::testCreateHttpAuthResolver_netrc()
-{
- _option->put(PREF_NO_NETRC, V_FALSE);
- _option->put(PREF_HTTP_USER, "foo");
- _option->put(PREF_HTTP_PASSWD, "bar");
- DefaultAuthResolverHandle defResolver = _factory->createHttpAuthResolver();
- CPPUNIT_ASSERT(!defResolver.isNull());
- CPPUNIT_ASSERT(!defResolver->getUserDefinedAuthConfig().isNull());
- CPPUNIT_ASSERT_EQUAL(string("foo:bar"),
- defResolver->getUserDefinedAuthConfig()->getAuthText());
- /*
- NetrcAuthResolverHandle netrcResolver = _factory->createHttpAuthResolver();
- CPPUNIT_ASSERT(!netrcResolver.isNull());
- CPPUNIT_ASSERT(!netrcResolver->getNetrc().isNull());
- CPPUNIT_ASSERT(netrcResolver->getUserDefinedAuthConfig().isNull());
- */
-}
-
-void RequestFactoryTest::testCreateHttpAuthResolver_def()
-{
- _option->put(PREF_NO_NETRC, V_TRUE);
- _option->put(PREF_HTTP_USER, "foo");
- _option->put(PREF_HTTP_PASSWD, "bar");
- DefaultAuthResolverHandle defResolver = _factory->createHttpAuthResolver();
- CPPUNIT_ASSERT(!defResolver.isNull());
- CPPUNIT_ASSERT(!defResolver->getUserDefinedAuthConfig().isNull());
- CPPUNIT_ASSERT_EQUAL(string("foo:bar"),
- defResolver->getUserDefinedAuthConfig()->getAuthText());
-}
-
-void RequestFactoryTest::testCreateFtpAuthResolver_netrc()
-{
- _option->put(PREF_NO_NETRC, V_FALSE);
- NetrcAuthResolverHandle netrcResolver = _factory->createFtpAuthResolver();
- CPPUNIT_ASSERT(!netrcResolver.isNull());
- CPPUNIT_ASSERT(!netrcResolver->getNetrc().isNull());
- CPPUNIT_ASSERT(netrcResolver->getUserDefinedAuthConfig().isNull());
- CPPUNIT_ASSERT_EQUAL(string("anonymous:ARIA2USER@"),
- netrcResolver->getDefaultAuthConfig()->getAuthText());
-}
-
-void RequestFactoryTest::testCreateFtpAuthResolver_def()
-{
- _option->put(PREF_NO_NETRC, V_TRUE);
- _option->put(PREF_FTP_USER, "foo");
- _option->put(PREF_FTP_PASSWD, "bar");
- DefaultAuthResolverHandle defResolver = _factory->createFtpAuthResolver();
- CPPUNIT_ASSERT(!defResolver.isNull());
- CPPUNIT_ASSERT(!defResolver->getUserDefinedAuthConfig().isNull());
- CPPUNIT_ASSERT_EQUAL(string("foo:bar"),
- defResolver->getUserDefinedAuthConfig()->getAuthText());
- CPPUNIT_ASSERT_EQUAL(string("anonymous:ARIA2USER@"),
- defResolver->getDefaultAuthConfig()->getAuthText());
-}
-
-void RequestFactoryTest::testCreateHttpProxyAuthResolver_netrc()
-{
- _option->put(PREF_NO_NETRC, V_FALSE);
- _option->put(PREF_HTTP_PROXY_USER, "foo");
- _option->put(PREF_HTTP_PROXY_PASSWD, "bar");
- DefaultAuthResolverHandle defResolver = _factory->createHttpProxyAuthResolver();
- CPPUNIT_ASSERT(!defResolver.isNull());
- CPPUNIT_ASSERT(!defResolver->getUserDefinedAuthConfig().isNull());
- CPPUNIT_ASSERT_EQUAL(string("foo:bar"),
- defResolver->getUserDefinedAuthConfig()->getAuthText());
- /*
- NetrcAuthResolverHandle netrcResolver = _factory->createHttpProxyAuthResolver();
- CPPUNIT_ASSERT(!netrcResolver.isNull());
- CPPUNIT_ASSERT(!netrcResolver->getNetrc().isNull());
- CPPUNIT_ASSERT(netrcResolver->getUserDefinedAuthConfig().isNull());
- */
-}
-
-void RequestFactoryTest::testCreateHttpProxyAuthResolver_def()
-{
- _option->put(PREF_NO_NETRC, V_TRUE);
- _option->put(PREF_HTTP_PROXY_USER, "foo");
- _option->put(PREF_HTTP_PROXY_PASSWD, "bar");
- DefaultAuthResolverHandle defResolver = _factory->createHttpProxyAuthResolver();
- CPPUNIT_ASSERT(!defResolver.isNull());
- CPPUNIT_ASSERT(!defResolver->getUserDefinedAuthConfig().isNull());
- CPPUNIT_ASSERT_EQUAL(string("foo:bar"),
- defResolver->getUserDefinedAuthConfig()->getAuthText());
-}
-
diff --git a/test/RequestGroupManTest.cc b/test/RequestGroupManTest.cc
index 4d2a0688..6b88e63b 100644
--- a/test/RequestGroupManTest.cc
+++ b/test/RequestGroupManTest.cc
@@ -1,9 +1,9 @@
#include "RequestGroupMan.h"
#include "CUIDCounter.h"
#include "prefs.h"
-#include "RequestFactory.h"
#include "SingleFileDownloadContext.h"
#include "RequestGroup.h"
+#include "Option.h"
#include <cppunit/extensions/HelperMacros.h>
using namespace std;
@@ -64,28 +64,4 @@ void RequestGroupManTest::testIsSameFileBeingDownloaded()
void RequestGroupManTest::testGetInitialCommands()
{
// TODO implement later
- /*
- Option option;
- option.put(PREF_SPLIT, "1");
- option.put(PREF_TIMEOUT, "10");
-
- RequestFactoryHandle requestFactory = new RequestFactory();
- requestFactory->setOption(&option);
- RequestFactorySingletonHolder::instance(requestFactory);
-
- RequestGroupMan gm;
-
- RequestGroupHandle rg1 = new RequestGroup("aria2.tar.bz2.metalink",
- &option);
- RequestGroupHandle rg2 = new RequestGroup("http://localhost/aria2.tar.bz2",
- &option);
-
- gm.addRequestGroup(rg1);
- gm.addRequestGroup(rg2);
-
- ConsoleDownloadEngine e;
- e.option = &option;
- Commands commands = gm.getInitialCommands(&e);
- CPPUNIT_ASSERT_EQUAL((size_t)1, commands.size());
- */
}
diff --git a/test/RequestTest.cc b/test/RequestTest.cc
index f93e98e4..04da1740 100644
--- a/test/RequestTest.cc
+++ b/test/RequestTest.cc
@@ -23,16 +23,15 @@ class RequestTest:public CppUnit::TestFixture {
CPPUNIT_TEST(testSetUrl14);
CPPUNIT_TEST(testSetUrl15);
CPPUNIT_TEST(testSetUrl16);
+ CPPUNIT_TEST(testSetUrl_username);
+ CPPUNIT_TEST(testSetUrl_usernamePassword);
+ CPPUNIT_TEST(testSetUrl_zeroUsername);
CPPUNIT_TEST(testRedirectUrl);
CPPUNIT_TEST(testRedirectUrl2);
CPPUNIT_TEST(testResetUrl);
CPPUNIT_TEST(testSafeChar);
CPPUNIT_TEST(testInnerLink);
CPPUNIT_TEST(testMetalink);
- CPPUNIT_TEST(testResolveHttpAuthConfig);
- CPPUNIT_TEST(testResolveHttpAuthConfig_noCandidate);
- CPPUNIT_TEST(testResolveHttpProxyAuthConfig);
- CPPUNIT_TEST(testResolveFtpAuthConfig);
CPPUNIT_TEST_SUITE_END();
public:
@@ -52,16 +51,15 @@ public:
void testSetUrl14();
void testSetUrl15();
void testSetUrl16();
+ void testSetUrl_username();
+ void testSetUrl_usernamePassword();
+ void testSetUrl_zeroUsername();
void testRedirectUrl();
void testRedirectUrl2();
void testResetUrl();
void testSafeChar();
void testInnerLink();
void testMetalink();
- void testResolveHttpAuthConfig();
- void testResolveHttpAuthConfig_noCandidate();
- void testResolveHttpProxyAuthConfig();
- void testResolveFtpAuthConfig();
};
@@ -80,6 +78,8 @@ void RequestTest::testSetUrl1() {
CPPUNIT_ASSERT_EQUAL(string("aria.rednoah.com"), req.getHost());
CPPUNIT_ASSERT_EQUAL(string("/"), req.getDir());
CPPUNIT_ASSERT_EQUAL(string(""), req.getFile());
+ CPPUNIT_ASSERT_EQUAL(string(""), req.getUsername());
+ CPPUNIT_ASSERT_EQUAL(string(""), req.getPassword());
}
void RequestTest::testSetUrl2() {
@@ -341,77 +341,66 @@ void RequestTest::testMetalink() {
#endif // ENABLE_METALINK
}
-void RequestTest::testResolveHttpAuthConfig()
+void RequestTest::testSetUrl_zeroUsername()
{
Request req;
- req.setUrl("http://localhost/download/aria2-1.0.0.tar.bz2");
- // with DefaultAuthResolver
- DefaultAuthResolverHandle defaultAuthResolver = new DefaultAuthResolver();
- req.setHttpAuthResolver(defaultAuthResolver);
- CPPUNIT_ASSERT(!req.resolveHttpAuthConfig().isNull());
- CPPUNIT_ASSERT_EQUAL(string(":"),
- req.resolveHttpAuthConfig()->getAuthText());
-
- // with Netrc
- NetrcHandle netrc = new Netrc();
- netrc->addAuthenticator(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount"));
- NetrcAuthResolverHandle netrcAuthResolver = new NetrcAuthResolver();
- netrcAuthResolver->setNetrc(netrc);
- req.setHttpAuthResolver(netrcAuthResolver);
- AuthConfigHandle authConfig1 = req.resolveHttpAuthConfig();
- CPPUNIT_ASSERT(!authConfig1.isNull());
- CPPUNIT_ASSERT_EQUAL(string("default:defaultpassword"),
- authConfig1->getAuthText());
-
- // with Netrc + user defined
- AuthConfigHandle authConfig =
- new AuthConfig("userDefinedUser", "userDefinedPassword");
- netrcAuthResolver->setUserDefinedAuthConfig(authConfig);
- AuthConfigHandle authConfig2 = req.resolveHttpAuthConfig();
- CPPUNIT_ASSERT(!authConfig2.isNull());
- CPPUNIT_ASSERT_EQUAL(string("userDefinedUser:userDefinedPassword"),
- authConfig2->getAuthText());
-}
-
-void RequestTest::testResolveHttpAuthConfig_noCandidate()
-{
- Request req;
- req.setUrl("http://localhost/download/aria2-1.0.0.tar.bz2");
+ CPPUNIT_ASSERT(req.setUrl("ftp://@localhost/download/aria2-1.0.0.tar.bz2"));
+ CPPUNIT_ASSERT_EQUAL(string("ftp"), req.getProtocol());
+ CPPUNIT_ASSERT_EQUAL((int32_t)21, req.getPort());
+ CPPUNIT_ASSERT_EQUAL(string("localhost"), req.getHost());
+ CPPUNIT_ASSERT_EQUAL(string("/download"), req.getDir());
+ CPPUNIT_ASSERT_EQUAL(string("aria2-1.0.0.tar.bz2"), req.getFile());
+ CPPUNIT_ASSERT_EQUAL(string(""), req.getUsername());
+ CPPUNIT_ASSERT_EQUAL(string(""), req.getPassword());
+
+ CPPUNIT_ASSERT(req.setUrl("ftp://:@localhost/download/aria2-1.0.0.tar.bz2"));
+ CPPUNIT_ASSERT_EQUAL(string("ftp"), req.getProtocol());
+ CPPUNIT_ASSERT_EQUAL((int32_t)21, req.getPort());
+ CPPUNIT_ASSERT_EQUAL(string("localhost"), req.getHost());
+ CPPUNIT_ASSERT_EQUAL(string("/download"), req.getDir());
+ CPPUNIT_ASSERT_EQUAL(string("aria2-1.0.0.tar.bz2"), req.getFile());
+ CPPUNIT_ASSERT_EQUAL(string(""), req.getUsername());
+ CPPUNIT_ASSERT_EQUAL(string(""), req.getPassword());
+
+ CPPUNIT_ASSERT(req.setUrl("ftp://:pass@localhost/download/aria2-1.0.0.tar.bz2"));
+ CPPUNIT_ASSERT_EQUAL(string("ftp"), req.getProtocol());
+ CPPUNIT_ASSERT_EQUAL((int32_t)21, req.getPort());
+ CPPUNIT_ASSERT_EQUAL(string("localhost"), req.getHost());
+ CPPUNIT_ASSERT_EQUAL(string("/download"), req.getDir());
+ CPPUNIT_ASSERT_EQUAL(string("aria2-1.0.0.tar.bz2"), req.getFile());
+ CPPUNIT_ASSERT_EQUAL(string(""), req.getUsername());
+ CPPUNIT_ASSERT_EQUAL(string("pass"), req.getPassword());
- DefaultAuthResolverHandle defaultAuthResolver = new DefaultAuthResolver();
- req.setHttpAuthResolver(defaultAuthResolver);
- CPPUNIT_ASSERT_EQUAL(string(":"),
- req.resolveHttpAuthConfig()->getAuthText());
}
-void RequestTest::testResolveHttpProxyAuthConfig()
+void RequestTest::testSetUrl_username()
{
Request req;
- req.setUrl("http://localhost/download/aria2-1.0.0.tar.bz2");
- // with Netrc
- NetrcHandle netrc = new Netrc();
- netrc->addAuthenticator(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount"));
- NetrcAuthResolverHandle netrcAuthResolver = new NetrcAuthResolver();
- netrcAuthResolver->setNetrc(netrc);
- req.setHttpProxyAuthResolver(netrcAuthResolver);
- AuthConfigHandle authConfig1 = req.resolveHttpProxyAuthConfig();
- CPPUNIT_ASSERT(!authConfig1.isNull());
- CPPUNIT_ASSERT_EQUAL(string("default:defaultpassword"),
- authConfig1->getAuthText());
+ CPPUNIT_ASSERT(req.setUrl("ftp://aria2user@localhost/download/aria2-1.0.0.tar.bz2"));
+ CPPUNIT_ASSERT_EQUAL(string("ftp"), req.getProtocol());
+ CPPUNIT_ASSERT_EQUAL((int32_t)21, req.getPort());
+ CPPUNIT_ASSERT_EQUAL(string("localhost"), req.getHost());
+ CPPUNIT_ASSERT_EQUAL(string("/download"), req.getDir());
+ CPPUNIT_ASSERT_EQUAL(string("aria2-1.0.0.tar.bz2"), req.getFile());
+ CPPUNIT_ASSERT_EQUAL(string("aria2user"), req.getUsername());
+ CPPUNIT_ASSERT_EQUAL(string(""), req.getPassword());
}
-void RequestTest::testResolveFtpAuthConfig()
+void RequestTest::testSetUrl_usernamePassword()
{
Request req;
- req.setUrl("http://localhost/download/aria2-1.0.0.tar.bz2");
- // with Netrc
- NetrcHandle netrc = new Netrc();
- netrc->addAuthenticator(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount"));
- NetrcAuthResolverHandle netrcAuthResolver = new NetrcAuthResolver();
- netrcAuthResolver->setNetrc(netrc);
- req.setFtpAuthResolver(netrcAuthResolver);
- AuthConfigHandle authConfig1 = req.resolveFtpAuthConfig();
- CPPUNIT_ASSERT(!authConfig1.isNull());
- CPPUNIT_ASSERT_EQUAL(string("default:defaultpassword"),
- authConfig1->getAuthText());
+ CPPUNIT_ASSERT(req.setUrl("ftp://aria2user%40:aria2pass%40@localhost/download/aria2-1.0.0.tar.bz2"));
+ CPPUNIT_ASSERT_EQUAL(string("ftp"), req.getProtocol());
+ CPPUNIT_ASSERT_EQUAL((int32_t)21, req.getPort());
+ CPPUNIT_ASSERT_EQUAL(string("localhost"), req.getHost());
+ CPPUNIT_ASSERT_EQUAL(string("/download"), req.getDir());
+ CPPUNIT_ASSERT_EQUAL(string("aria2-1.0.0.tar.bz2"), req.getFile());
+ CPPUNIT_ASSERT_EQUAL(string("aria2user@"), req.getUsername());
+ CPPUNIT_ASSERT_EQUAL(string("aria2pass@"), req.getPassword());
+
+ // make sure that after new url is set, username and password are updated.
+ CPPUNIT_ASSERT(req.setUrl("ftp://localhost/download/aria2-1.0.0.tar.bz2"));
+ CPPUNIT_ASSERT_EQUAL(string(""), req.getUsername());
+ CPPUNIT_ASSERT_EQUAL(string(""), req.getPassword());
+
}