AuthConfigFactoryTest.cc 4.1 KB

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