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 | |
| 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')
| -rw-r--r-- | test/AuthConfigFactoryTest.cc | 124 | ||||
| -rw-r--r-- | test/HttpRequestTest.cc | 103 | ||||
| -rw-r--r-- | test/Makefile.am | 2 | ||||
| -rw-r--r-- | test/Makefile.in | 8 | ||||
| -rw-r--r-- | test/RequestFactoryTest.cc | 128 | ||||
| -rw-r--r-- | test/RequestGroupManTest.cc | 26 | ||||
| -rw-r--r-- | test/RequestTest.cc | 129 |
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()); + } |
