NetrcAuthResolverTest.cc 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "NetrcAuthResolver.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. #include "prefs.h"
  4. #include "Netrc.h"
  5. #include "AuthConfig.h"
  6. #include "a2functional.h"
  7. namespace aria2 {
  8. class NetrcAuthResolverTest : public CppUnit::TestFixture {
  9. CPPUNIT_TEST_SUITE(NetrcAuthResolverTest);
  10. CPPUNIT_TEST(testResolveAuthConfig_without_userDefined);
  11. CPPUNIT_TEST(testResolveAuthConfig_with_userDefined);
  12. CPPUNIT_TEST(testResolveAuthConfig_ignoreDefault);
  13. CPPUNIT_TEST_SUITE_END();
  14. private:
  15. std::unique_ptr<Netrc> netrc_;
  16. std::unique_ptr<NetrcAuthResolver> resolver_;
  17. public:
  18. void setUp()
  19. {
  20. netrc_.reset(new Netrc());
  21. netrc_->addAuthenticator(
  22. make_unique<Authenticator>("localhost", "name", "passwd", "account"));
  23. netrc_->addAuthenticator(make_unique<DefaultAuthenticator>(
  24. "default", "defaultpasswd", "defaultaccount"));
  25. resolver_.reset(new NetrcAuthResolver());
  26. resolver_->setNetrc(netrc_.get());
  27. resolver_->setDefaultCred("foo", "bar");
  28. }
  29. void testResolveAuthConfig_without_userDefined();
  30. void testResolveAuthConfig_with_userDefined();
  31. void testResolveAuthConfig_ignoreDefault();
  32. };
  33. CPPUNIT_TEST_SUITE_REGISTRATION(NetrcAuthResolverTest);
  34. void NetrcAuthResolverTest::testResolveAuthConfig_without_userDefined()
  35. {
  36. auto authConfig = resolver_->resolveAuthConfig("localhost");
  37. CPPUNIT_ASSERT_EQUAL(std::string("name:passwd"), authConfig->getAuthText());
  38. authConfig = resolver_->resolveAuthConfig("mymachine");
  39. CPPUNIT_ASSERT_EQUAL(std::string("default:defaultpasswd"),
  40. authConfig->getAuthText());
  41. resolver_->setNetrc(nullptr);
  42. authConfig = resolver_->resolveAuthConfig("localhost");
  43. CPPUNIT_ASSERT_EQUAL(std::string("foo:bar"), authConfig->getAuthText());
  44. }
  45. void NetrcAuthResolverTest::testResolveAuthConfig_with_userDefined()
  46. {
  47. resolver_->setUserDefinedCred("myname", "mypasswd");
  48. auto authConfig = resolver_->resolveAuthConfig("localhost");
  49. CPPUNIT_ASSERT_EQUAL(std::string("myname:mypasswd"),
  50. authConfig->getAuthText());
  51. authConfig = resolver_->resolveAuthConfig("mymachine");
  52. CPPUNIT_ASSERT_EQUAL(std::string("myname:mypasswd"),
  53. authConfig->getAuthText());
  54. resolver_->setNetrc(nullptr);
  55. authConfig = resolver_->resolveAuthConfig("mymachine");
  56. CPPUNIT_ASSERT_EQUAL(std::string("myname:mypasswd"),
  57. authConfig->getAuthText());
  58. }
  59. void NetrcAuthResolverTest::testResolveAuthConfig_ignoreDefault()
  60. {
  61. resolver_->ignoreDefault();
  62. auto authConfig = resolver_->resolveAuthConfig("mirror");
  63. CPPUNIT_ASSERT_EQUAL(std::string("foo:bar"), authConfig->getAuthText());
  64. resolver_->useDefault();
  65. auto defAuthConfig = resolver_->resolveAuthConfig("mirror");
  66. CPPUNIT_ASSERT_EQUAL(std::string("default:defaultpasswd"),
  67. defAuthConfig->getAuthText());
  68. }
  69. } // namespace aria2