XmlRpcMethodTest.cc 2.4 KB

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