llhttpclientadapter_test.cpp
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:5k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file 
  3.  * @brief 
  4.  *
  5.  * $LicenseInfo:firstyear=2008&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2008-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #include "llhttpclientadapter.h"
  33. #include "../test/lltut.h"
  34. #include "llhttpclient.h"
  35. #include "llcurl_stub.cpp"
  36. float const HTTP_REQUEST_EXPIRY_SECS = 1.0F;
  37. std::vector<std::string> get_urls;
  38. std::vector<boost::intrusive_ptr<LLCurl::Responder> > get_responders;
  39. void LLHTTPClient::get(const std::string& url, boost::intrusive_ptr<LLCurl::Responder> responder, const LLSD& headers, const F32 timeout)
  40. {
  41. get_urls.push_back(url);
  42. get_responders.push_back(responder);
  43. }
  44. std::vector<std::string> put_urls;
  45. std::vector<LLSD> put_body;
  46. std::vector<boost::intrusive_ptr<LLCurl::Responder> > put_responders;
  47. void LLHTTPClient::put(const std::string& url, const LLSD& body, boost::intrusive_ptr<LLCurl::Responder> responder, const LLSD& headers, const F32 timeout)
  48. {
  49. put_urls.push_back(url);
  50. put_responders.push_back(responder);
  51. put_body.push_back(body);
  52. }
  53. namespace tut
  54. {
  55. struct LLHTTPClientAdapterData
  56. {
  57. LLHTTPClientAdapterData()
  58. {
  59. get_urls.clear();
  60. get_responders.clear();
  61. put_urls.clear();
  62. put_responders.clear();
  63. put_body.clear();
  64. }
  65. };
  66. typedef test_group<LLHTTPClientAdapterData> factory;
  67. typedef factory::object object;
  68. }
  69. namespace
  70. {
  71. tut::factory tf("LLHTTPClientAdapterData test");
  72. }
  73. namespace tut
  74. {
  75. // Ensure we can create the object
  76. template<> template<>
  77. void object::test<1>()
  78. {
  79. LLHTTPClientAdapter adapter;
  80. }
  81. // Does the get pass the appropriate arguments to the LLHTTPClient
  82. template<> template<>
  83. void object::test<2>()
  84. {
  85. LLHTTPClientAdapter adapter;
  86. boost::intrusive_ptr<LLCurl::Responder> responder = new LLCurl::Responder();
  87. adapter.get("Made up URL", responder);
  88. ensure_equals(get_urls.size(), 1);
  89. ensure_equals(get_urls[0], "Made up URL");
  90. }
  91. // Ensure the responder matches the one passed to get
  92. template<> template<>
  93. void object::test<3>()
  94. {
  95. LLHTTPClientAdapter adapter;
  96. boost::intrusive_ptr<LLCurl::Responder> responder = new LLCurl::Responder();
  97. adapter.get("Made up URL", responder);
  98. ensure_equals(get_responders.size(), 1);
  99. ensure_equals(get_responders[0].get(), responder.get());
  100. }
  101. // Ensure the correct url is used in the put
  102. template<> template<>
  103. void object::test<4>()
  104. {
  105. LLHTTPClientAdapter adapter;
  106. boost::intrusive_ptr<LLCurl::Responder> responder = new LLCurl::Responder();
  107. LLSD body;
  108. body["TestBody"] = "Foobar";
  109. adapter.put("Made up URL", body, responder);
  110. ensure_equals(put_urls.size(), 1);
  111. ensure_equals(put_urls[0], "Made up URL");
  112. }
  113. // Ensure the correct responder is used by put
  114. template<> template<>
  115. void object::test<5>()
  116. {
  117. LLHTTPClientAdapter adapter;
  118. boost::intrusive_ptr<LLCurl::Responder> responder = new LLCurl::Responder();
  119. LLSD body;
  120. body["TestBody"] = "Foobar";
  121. adapter.put("Made up URL", body, responder);
  122. ensure_equals(put_responders.size(), 1);
  123. ensure_equals(put_responders[0].get(), responder.get());
  124. }
  125. // Ensure the message body is passed through the put properly
  126. template<> template<>
  127. void object::test<6>()
  128. {
  129. LLHTTPClientAdapter adapter;
  130. boost::intrusive_ptr<LLCurl::Responder> responder = new LLCurl::Responder();
  131. LLSD body;
  132. body["TestBody"] = "Foobar";
  133. adapter.put("Made up URL", body, responder);
  134. ensure_equals(put_body.size(), 1);
  135. ensure_equals(put_body[0]["TestBody"].asString(), "Foobar");
  136. }
  137. }