|
@@ -14,12 +14,14 @@ 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();
|
|
|
};
|
|
@@ -34,6 +36,7 @@ void AuthConfigFactoryTest::testCreateAuthConfig_http()
|
|
|
|
|
|
Option option;
|
|
|
option.put(PREF_NO_NETRC, V_FALSE);
|
|
|
+ option.put(PREF_HTTP_AUTH_CHALLENGE, V_TRUE);
|
|
|
|
|
|
AuthConfigFactory factory(&option);
|
|
|
|
|
@@ -60,12 +63,11 @@ void AuthConfigFactoryTest::testCreateAuthConfig_http()
|
|
|
factory.createAuthConfig(req)->getAuthText());
|
|
|
|
|
|
// See default token in netrc is ignored.
|
|
|
- SharedHandle<Request> mirrorReq(new Request());
|
|
|
req->setUrl("http://mirror/");
|
|
|
|
|
|
CPPUNIT_ASSERT(!factory.activateBasicCred("mirror", "/"));
|
|
|
|
|
|
- CPPUNIT_ASSERT(factory.createAuthConfig(mirrorReq).isNull());
|
|
|
+ CPPUNIT_ASSERT(factory.createAuthConfig(req).isNull());
|
|
|
|
|
|
// with Netrc + user defined
|
|
|
option.put(PREF_HTTP_USER, "userDefinedUser");
|
|
@@ -84,6 +86,52 @@ void AuthConfigFactoryTest::testCreateAuthConfig_http()
|
|
|
factory.createAuthConfig(req)->getAuthText());
|
|
|
}
|
|
|
|
|
|
+void AuthConfigFactoryTest::testCreateAuthConfig_httpNoChallenge()
|
|
|
+{
|
|
|
+ SharedHandle<Request> 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(factory.createAuthConfig(req).isNull());
|
|
|
+
|
|
|
+ // 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)->getAuthText());
|
|
|
+
|
|
|
+ // See default token in netrc is ignored.
|
|
|
+ req->setUrl("http://mirror/");
|
|
|
+
|
|
|
+ CPPUNIT_ASSERT(factory.createAuthConfig(req).isNull());
|
|
|
+
|
|
|
+ // 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)->getAuthText());
|
|
|
+
|
|
|
+ // username and password in URI
|
|
|
+ req->setUrl("http://aria2user:aria2password@localhost/download/aria2-1.0.0.tar.bz2");
|
|
|
+ CPPUNIT_ASSERT_EQUAL(std::string("aria2user:aria2password"),
|
|
|
+ factory.createAuthConfig(req)->getAuthText());
|
|
|
+}
|
|
|
+
|
|
|
void AuthConfigFactoryTest::testCreateAuthConfig_ftp()
|
|
|
{
|
|
|
SharedHandle<Request> req(new Request());
|
|
@@ -128,6 +176,7 @@ void AuthConfigFactoryTest::testUpdateBasicCred()
|
|
|
{
|
|
|
Option option;
|
|
|
option.put(PREF_NO_NETRC, V_FALSE);
|
|
|
+ option.put(PREF_HTTP_AUTH_CHALLENGE, V_TRUE);
|
|
|
|
|
|
AuthConfigFactory factory(&option);
|
|
|
|