| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 | 
							- #include "AuthConfigFactory.h"
 
- #include <cppunit/extensions/HelperMacros.h>
 
- #include "Netrc.h"
 
- #include "prefs.h"
 
- #include "Request.h"
 
- #include "AuthConfig.h"
 
- #include "Option.h"
 
- namespace aria2 {
 
- class AuthConfigFactoryTest:public CppUnit::TestFixture {
 
-   CPPUNIT_TEST_SUITE(AuthConfigFactoryTest);
 
-   CPPUNIT_TEST(testCreateAuthConfig_http);
 
-   CPPUNIT_TEST(testCreateAuthConfig_httpNoChallenge);
 
-   CPPUNIT_TEST(testCreateAuthConfig_ftp);
 
-   CPPUNIT_TEST(testUpdateBasicCred);
 
-   CPPUNIT_TEST_SUITE_END();
 
-   
 
- public:
 
-   void testCreateAuthConfig_http();
 
-   void testCreateAuthConfig_httpNoChallenge();
 
-   void testCreateAuthConfig_ftp();
 
-   void testUpdateBasicCred();
 
- };
 
- CPPUNIT_TEST_SUITE_REGISTRATION( AuthConfigFactoryTest );
 
- void AuthConfigFactoryTest::testCreateAuthConfig_http()
 
- {
 
-   SharedHandle<Request> req(new Request());
 
-   req->setUri("http://localhost/download/aria2-1.0.0.tar.bz2");
 
-   Option option;
 
-   option.put(PREF_NO_NETRC, A2_V_FALSE);
 
-   option.put(PREF_HTTP_AUTH_CHALLENGE, A2_V_TRUE);
 
-   AuthConfigFactory factory;
 
-   // without auth info
 
-   CPPUNIT_ASSERT(!factory.createAuthConfig(req, &option));
 
-   // with Netrc
 
-   SharedHandle<Netrc> netrc(new Netrc());
 
-   netrc->addAuthenticator
 
-     (SharedHandle<Authenticator>(new Authenticator("localhost",
 
-                                                    "localhostuser",
 
-                                                    "localhostpass",
 
-                                                    "localhostacct")));
 
-   netrc->addAuthenticator
 
-     (SharedHandle<Authenticator>(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount")));
 
-   factory.setNetrc(netrc);
 
-   // not activated
 
-   CPPUNIT_ASSERT(!factory.createAuthConfig(req, &option));
 
-   CPPUNIT_ASSERT(factory.activateBasicCred("localhost", "/", &option));
 
-   CPPUNIT_ASSERT_EQUAL(std::string("localhostuser:localhostpass"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // See default token in netrc is ignored.
 
-   req->setUri("http://mirror/");
 
-   CPPUNIT_ASSERT(!factory.activateBasicCred("mirror", "/", &option));
 
-   CPPUNIT_ASSERT(!factory.createAuthConfig(req, &option));
 
-   // with Netrc + user defined
 
-   option.put(PREF_HTTP_USER, "userDefinedUser");
 
-   option.put(PREF_HTTP_PASSWD, "userDefinedPassword");
 
-   CPPUNIT_ASSERT(!factory.createAuthConfig(req, &option));
 
-   CPPUNIT_ASSERT(factory.activateBasicCred("mirror", "/", &option));
 
-   CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // username and password in URI
 
-   req->setUri("http://aria2user:aria2password@localhost/download/aria2-1.0.0.tar.bz2");
 
-   CPPUNIT_ASSERT_EQUAL(std::string("aria2user:aria2password"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());  
 
- }
 
- void AuthConfigFactoryTest::testCreateAuthConfig_httpNoChallenge()
 
- {
 
-   SharedHandle<Request> req(new Request());
 
-   req->setUri("http://localhost/download/aria2-1.0.0.tar.bz2");
 
-   Option option;
 
-   option.put(PREF_NO_NETRC, A2_V_FALSE);
 
-   AuthConfigFactory factory;
 
-   // without auth info
 
-   CPPUNIT_ASSERT(!factory.createAuthConfig(req, &option));
 
-   // with Netrc
 
-   SharedHandle<Netrc> netrc(new Netrc());
 
-   netrc->addAuthenticator
 
-     (SharedHandle<Authenticator>(new Authenticator("localhost",
 
-                                                    "localhostuser",
 
-                                                    "localhostpass",
 
-                                                    "localhostacct")));
 
-   netrc->addAuthenticator
 
-     (SharedHandle<Authenticator>(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount")));
 
-   factory.setNetrc(netrc);
 
-   // not activated
 
-   CPPUNIT_ASSERT_EQUAL(std::string("localhostuser:localhostpass"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // See default token in netrc is ignored.
 
-   req->setUri("http://mirror/");
 
-   CPPUNIT_ASSERT(!factory.createAuthConfig(req, &option));
 
-   // with Netrc + user defined
 
-   option.put(PREF_HTTP_USER, "userDefinedUser");
 
-   option.put(PREF_HTTP_PASSWD, "userDefinedPassword");
 
-   CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // username and password in URI
 
-   req->setUri("http://aria2user:aria2password@localhost/download/aria2-1.0.0.tar.bz2");
 
-   CPPUNIT_ASSERT_EQUAL(std::string("aria2user:aria2password"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());  
 
- }
 
- void AuthConfigFactoryTest::testCreateAuthConfig_ftp()
 
- {
 
-   SharedHandle<Request> req(new Request());
 
-   req->setUri("ftp://localhost/download/aria2-1.0.0.tar.bz2");
 
-   Option option;
 
-   option.put(PREF_NO_NETRC, A2_V_FALSE);
 
-   AuthConfigFactory factory;
 
-   // without auth info
 
-   CPPUNIT_ASSERT_EQUAL(std::string("anonymous:ARIA2USER@"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // with Netrc
 
-   SharedHandle<Netrc> netrc(new Netrc());
 
-   netrc->addAuthenticator
 
-     (SharedHandle<Authenticator>(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount")));
 
-   factory.setNetrc(netrc);
 
-   CPPUNIT_ASSERT_EQUAL(std::string("default:defaultpassword"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // disable Netrc
 
-   option.put(PREF_NO_NETRC, A2_V_TRUE);
 
-   CPPUNIT_ASSERT_EQUAL(std::string("anonymous:ARIA2USER@"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // with Netrc + user defined
 
-   option.put(PREF_NO_NETRC, A2_V_FALSE);
 
-   option.put(PREF_FTP_USER, "userDefinedUser");
 
-   option.put(PREF_FTP_PASSWD, "userDefinedPassword");
 
-   CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // username and password in URI
 
-   req->setUri("ftp://aria2user:aria2password@localhost/download/aria2-1.0.0.tar.bz2");
 
-   CPPUNIT_ASSERT_EQUAL(std::string("aria2user:aria2password"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // username in URI, but no password. We have DefaultAuthenticator
 
-   // but username is not aria2user
 
-   req->setUri("ftp://aria2user@localhost/download/aria2-1.0.0.tar.bz2");
 
-   CPPUNIT_ASSERT_EQUAL(std::string("aria2user:userDefinedPassword"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // Recreate netrc with entry for user aria2user
 
-   netrc.reset(new Netrc());
 
-   netrc->addAuthenticator
 
-     (SharedHandle<Authenticator>(new Authenticator("localhost",
 
-                                                    "aria2user",
 
-                                                    "netrcpass",
 
-                                                    "netrcacct")));
 
-   factory.setNetrc(netrc);
 
-   // This time, we can find same username "aria2user" in netrc, so the
 
-   // password "netrcpass" is used, instead of "userDefinedPassword"
 
-   CPPUNIT_ASSERT_EQUAL(std::string("aria2user:netrcpass"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   // No netrc entry for host mirror, so "userDefinedPassword" is used.
 
-   req->setUri("ftp://aria2user@mirror/download/aria2-1.0.0.tar.bz2");
 
-   CPPUNIT_ASSERT_EQUAL(std::string("aria2user:userDefinedPassword"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
- }
 
- void AuthConfigFactoryTest::testUpdateBasicCred()
 
- {
 
-   Option option;
 
-   option.put(PREF_NO_NETRC, A2_V_FALSE);
 
-   option.put(PREF_HTTP_AUTH_CHALLENGE, A2_V_TRUE);
 
-   AuthConfigFactory factory;
 
-   factory.updateBasicCred
 
-     (AuthConfigFactory::BasicCred("myname", "mypass", "localhost", "/", true));
 
-   factory.updateBasicCred
 
-     (AuthConfigFactory::BasicCred("price","j38jdc","localhost","/download", true));
 
-   factory.updateBasicCred
 
-     (AuthConfigFactory::BasicCred("alice","ium8","localhost","/documents", true));
 
-   factory.updateBasicCred
 
-     (AuthConfigFactory::BasicCred("jack", "jackx","mirror", "/doc", true));
 
-   SharedHandle<Request> req(new Request());
 
-   req->setUri("http://localhost/download/v2.6/Changelog");
 
-   
 
-   CPPUNIT_ASSERT_EQUAL(std::string("price:j38jdc"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   req->setUri("http://localhost/documents/reference.html");
 
-   CPPUNIT_ASSERT_EQUAL(std::string("alice:ium8"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   req->setUri("http://localhost/documents2/manual.html");
 
-   CPPUNIT_ASSERT_EQUAL(std::string("myname:mypass"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   req->setUri("http://localhost/doc/readme.txt");
 
-   CPPUNIT_ASSERT_EQUAL(std::string("myname:mypass"),
 
-                        factory.createAuthConfig(req, &option)->getAuthText());
 
-   req->setUri("http://local/");
 
-   CPPUNIT_ASSERT(!factory.createAuthConfig(req, &option));
 
-   req->setUri("http://mirror/");
 
-   CPPUNIT_ASSERT(!factory.createAuthConfig(req, &option));
 
- }
 
- } // namespace aria2
 
 
  |