AuthConfigFactoryTest.cc 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #include "AuthConfigFactory.h"
  2. #include "Netrc.h"
  3. #include "prefs.h"
  4. #include "Request.h"
  5. #include "AuthConfig.h"
  6. #include "Option.h"
  7. #include <cppunit/extensions/HelperMacros.h>
  8. namespace aria2 {
  9. class AuthConfigFactoryTest:public CppUnit::TestFixture {
  10. CPPUNIT_TEST_SUITE(AuthConfigFactoryTest);
  11. CPPUNIT_TEST(testCreateAuthConfig_http);
  12. CPPUNIT_TEST(testCreateAuthConfigForHttpProxy);
  13. CPPUNIT_TEST(testCreateAuthConfig_ftp);
  14. CPPUNIT_TEST_SUITE_END();
  15. public:
  16. void testCreateAuthConfig_http();
  17. void testCreateAuthConfigForHttpProxy();
  18. void testCreateAuthConfig_ftp();
  19. };
  20. CPPUNIT_TEST_SUITE_REGISTRATION( AuthConfigFactoryTest );
  21. void AuthConfigFactoryTest::testCreateAuthConfig_http()
  22. {
  23. SharedHandle<Request> req(new Request());
  24. req->setUrl("http://localhost/download/aria2-1.0.0.tar.bz2");
  25. Option option;
  26. option.put(PREF_NO_NETRC, V_FALSE);
  27. AuthConfigFactory factory(&option);
  28. // without auth info
  29. CPPUNIT_ASSERT_EQUAL(std::string(":"),
  30. factory.createAuthConfig(req)->getAuthText());
  31. // with Netrc: disabled by default
  32. SharedHandle<Netrc> netrc(new Netrc());
  33. netrc->addAuthenticator
  34. (SharedHandle<Authenticator>(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount")));
  35. factory.setNetrc(netrc);
  36. CPPUNIT_ASSERT_EQUAL(std::string(":"),
  37. factory.createAuthConfig(req)->getAuthText());
  38. // with Netrc + user defined
  39. option.put(PREF_HTTP_USER, "userDefinedUser");
  40. option.put(PREF_HTTP_PASSWD, "userDefinedPassword");
  41. CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
  42. factory.createAuthConfig(req)->getAuthText());
  43. // username and password in URI: disabled by default.
  44. req->setUrl("http://aria2user:aria2password@localhost/download/aria2-1.0.0.tar.bz2");
  45. CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
  46. factory.createAuthConfig(req)->getAuthText());
  47. // CPPUNIT_ASSERT_EQUAL(std::string("aria2user:aria2password"),
  48. // factory.createAuthConfig(req)->getAuthText());
  49. }
  50. void AuthConfigFactoryTest::testCreateAuthConfigForHttpProxy()
  51. {
  52. SharedHandle<Request> req(new Request());
  53. req->setUrl("http://localhost/download/aria2-1.0.0.tar.bz2");
  54. // with Netrc
  55. SharedHandle<Netrc> netrc(new Netrc());
  56. netrc->addAuthenticator
  57. (SharedHandle<Authenticator>(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount")));
  58. Option option;
  59. option.put(PREF_NO_NETRC, V_FALSE);
  60. AuthConfigFactory factory(&option);
  61. factory.setNetrc(netrc);
  62. // netrc is not used in http proxy auth
  63. CPPUNIT_ASSERT_EQUAL(std::string(":"),
  64. factory.createAuthConfigForHttpProxy(req)->getAuthText());
  65. option.put(PREF_HTTP_PROXY_USER, "userDefinedUser");
  66. option.put(PREF_HTTP_PROXY_PASSWD, "userDefinedPassword");
  67. CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
  68. factory.createAuthConfigForHttpProxy(req)->getAuthText());
  69. }
  70. void AuthConfigFactoryTest::testCreateAuthConfig_ftp()
  71. {
  72. SharedHandle<Request> req(new Request());
  73. req->setUrl("ftp://localhost/download/aria2-1.0.0.tar.bz2");
  74. Option option;
  75. option.put(PREF_NO_NETRC, V_FALSE);
  76. AuthConfigFactory factory(&option);
  77. // without auth info
  78. CPPUNIT_ASSERT_EQUAL(std::string("anonymous:ARIA2USER@"),
  79. factory.createAuthConfig(req)->getAuthText());
  80. // with Netrc
  81. SharedHandle<Netrc> netrc(new Netrc());
  82. netrc->addAuthenticator
  83. (SharedHandle<Authenticator>(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount")));
  84. factory.setNetrc(netrc);
  85. CPPUNIT_ASSERT_EQUAL(std::string("default:defaultpassword"),
  86. factory.createAuthConfig(req)->getAuthText());
  87. // disable Netrc
  88. option.put(PREF_NO_NETRC, V_TRUE);
  89. CPPUNIT_ASSERT_EQUAL(std::string("anonymous:ARIA2USER@"),
  90. factory.createAuthConfig(req)->getAuthText());
  91. // with Netrc + user defined
  92. option.put(PREF_NO_NETRC, V_FALSE);
  93. option.put(PREF_FTP_USER, "userDefinedUser");
  94. option.put(PREF_FTP_PASSWD, "userDefinedPassword");
  95. CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
  96. factory.createAuthConfig(req)->getAuthText());
  97. // username and password in URI
  98. req->setUrl("ftp://aria2user:aria2password@localhost/download/aria2-1.0.0.tar.bz2");
  99. CPPUNIT_ASSERT_EQUAL(std::string("aria2user:aria2password"),
  100. factory.createAuthConfig(req)->getAuthText());
  101. }
  102. } // namespace aria2