XmlRpcMethodTest.cc 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "XmlRpcMethod.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. #include "DownloadEngine.h"
  4. #include "SelectEventPoll.h"
  5. #include "Option.h"
  6. #include "RequestGroupMan.h"
  7. #include "ServerStatMan.h"
  8. #include "RequestGroup.h"
  9. #include "XmlRpcMethodImpl.h"
  10. #include "BDE.h"
  11. #include "OptionParser.h"
  12. #include "OptionHandler.h"
  13. #include "XmlRpcRequest.h"
  14. namespace aria2 {
  15. namespace xmlrpc {
  16. class XmlRpcMethodTest:public CppUnit::TestFixture {
  17. CPPUNIT_TEST_SUITE(XmlRpcMethodTest);
  18. CPPUNIT_TEST(testAddUri);
  19. CPPUNIT_TEST(testNoSuchMethod);
  20. CPPUNIT_TEST_SUITE_END();
  21. private:
  22. SharedHandle<DownloadEngine> _e;
  23. SharedHandle<Option> _option;
  24. public:
  25. void setUp()
  26. {
  27. _option.reset(new Option());
  28. _e.reset(new DownloadEngine(SharedHandle<EventPoll>(new SelectEventPoll())));
  29. _e->option = _option.get();
  30. _e->_requestGroupMan.reset
  31. (new RequestGroupMan(std::deque<SharedHandle<RequestGroup> >(),
  32. 1, _option.get()));
  33. }
  34. void tearDown() {}
  35. void testAddUri();
  36. void testNoSuchMethod();
  37. };
  38. CPPUNIT_TEST_SUITE_REGISTRATION(XmlRpcMethodTest);
  39. void XmlRpcMethodTest::testAddUri()
  40. {
  41. AddUriXmlRpcMethod m;
  42. XmlRpcRequest req("aria2.addUri", BDE::list());
  43. req._params << BDE::list();
  44. req._params[0] << BDE("http://localhost/");
  45. std::string res = m.execute(req, _e.get());
  46. const std::deque<SharedHandle<RequestGroup> > rgs =
  47. _e->_requestGroupMan->getReservedGroups();
  48. CPPUNIT_ASSERT_EQUAL((size_t)1, rgs.size());
  49. CPPUNIT_ASSERT_EQUAL(std::string("http://localhost/"),
  50. rgs.front()->getRemainingUris().front());
  51. }
  52. void XmlRpcMethodTest::testNoSuchMethod()
  53. {
  54. NoSuchMethodXmlRpcMethod m;
  55. XmlRpcRequest req("make.hamburger", BDE::none);
  56. std::string res = m.execute(req, 0);
  57. CPPUNIT_ASSERT_EQUAL
  58. (std::string("<?xml version=\"1.0\"?>"
  59. "<methodResponse>"
  60. "<fault>"
  61. "<value>"
  62. "<struct>"
  63. "<member>"
  64. "<name>faultCode</name><value><int>1</int></value>"
  65. "</member>"
  66. "<member>"
  67. "<name>faultString</name>"
  68. "<value>"
  69. "<string>No such method: make.hamburger</string>"
  70. "</value>"
  71. "</member>"
  72. "</struct>"
  73. "</value>"
  74. "</fault>"
  75. "</methodResponse>"),
  76. res);
  77. }
  78. } // namespace xmlrpc
  79. } // namespace aria2