AuthConfigFactoryTest.cc 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount"));
  34. factory.setNetrc(netrc);
  35. CPPUNIT_ASSERT_EQUAL(std::string(":"),
  36. factory.createAuthConfig(req)->getAuthText());
  37. // with Netrc + user defined
  38. option.put(PREF_HTTP_USER, "userDefinedUser");
  39. option.put(PREF_HTTP_PASSWD, "userDefinedPassword");
  40. CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
  41. factory.createAuthConfig(req)->getAuthText());
  42. // username and password in URI: disabled by default.
  43. req->setUrl("http://aria2user:aria2password@localhost/download/aria2-1.0.0.tar.bz2");
  44. CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
  45. factory.createAuthConfig(req)->getAuthText());
  46. // CPPUNIT_ASSERT_EQUAL(std::string("aria2user:aria2password"),
  47. // factory.createAuthConfig(req)->getAuthText());
  48. }
  49. void AuthConfigFactoryTest::testCreateAuthConfigForHttpProxy()
  50. {
  51. SharedHandle<Request> req = new Request();
  52. req->setUrl("http://localhost/download/aria2-1.0.0.tar.bz2");
  53. // with Netrc
  54. SharedHandle<Netrc> netrc = new Netrc();
  55. netrc->addAuthenticator(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount"));
  56. Option option;
  57. option.put(PREF_NO_NETRC, V_FALSE);
  58. AuthConfigFactory factory(&option);
  59. factory.setNetrc(netrc);
  60. // netrc is not used in http proxy auth
  61. CPPUNIT_ASSERT_EQUAL(std::string(":"),
  62. factory.createAuthConfigForHttpProxy(req)->getAuthText());
  63. option.put(PREF_HTTP_PROXY_USER, "userDefinedUser");
  64. option.put(PREF_HTTP_PROXY_PASSWD, "userDefinedPassword");
  65. CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
  66. factory.createAuthConfigForHttpProxy(req)->getAuthText());
  67. }
  68. void AuthConfigFactoryTest::testCreateAuthConfig_ftp()
  69. {
  70. SharedHandle<Request> req = new Request();
  71. req->setUrl("ftp://localhost/download/aria2-1.0.0.tar.bz2");
  72. Option option;
  73. option.put(PREF_NO_NETRC, V_FALSE);
  74. AuthConfigFactory factory(&option);
  75. // without auth info
  76. CPPUNIT_ASSERT_EQUAL(std::string("anonymous:ARIA2USER@"),
  77. factory.createAuthConfig(req)->getAuthText());
  78. // with Netrc
  79. SharedHandle<Netrc> netrc = new Netrc();
  80. netrc->addAuthenticator(new DefaultAuthenticator("default", "defaultpassword", "defaultaccount"));
  81. factory.setNetrc(netrc);
  82. CPPUNIT_ASSERT_EQUAL(std::string("default:defaultpassword"),
  83. factory.createAuthConfig(req)->getAuthText());
  84. // disable Netrc
  85. option.put(PREF_NO_NETRC, V_TRUE);
  86. CPPUNIT_ASSERT_EQUAL(std::string("anonymous:ARIA2USER@"),
  87. factory.createAuthConfig(req)->getAuthText());
  88. // with Netrc + user defined
  89. option.put(PREF_NO_NETRC, V_FALSE);
  90. option.put(PREF_FTP_USER, "userDefinedUser");
  91. option.put(PREF_FTP_PASSWD, "userDefinedPassword");
  92. CPPUNIT_ASSERT_EQUAL(std::string("userDefinedUser:userDefinedPassword"),
  93. factory.createAuthConfig(req)->getAuthText());
  94. // username and password in URI
  95. req->setUrl("ftp://aria2user:aria2password@localhost/download/aria2-1.0.0.tar.bz2");
  96. CPPUNIT_ASSERT_EQUAL(std::string("aria2user:aria2password"),
  97. factory.createAuthConfig(req)->getAuthText());
  98. }
  99. } // namespace aria2