comparison UnitTestsSources/LuaTests.cpp @ 1055:6f923d52a46c

call Web services from Lua
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 24 Jul 2014 11:37:02 +0200
parents ee5cbe6e48d3
children 03c738276a04
comparison
equal deleted inserted replaced
1054:1701dcb6f554 1055:6f923d52a46c
238 } 238 }
239 } 239 }
240 240
241 TEST(Lua, Http) 241 TEST(Lua, Http)
242 { 242 {
243 const std::string url("http://orthanc.googlecode.com/hg/Resources/Configuration.json"); 243 Orthanc::LuaContext lua;
244 244
245 Orthanc::LuaContext lua; 245 #if UNIT_TESTS_WITH_HTTP_CONNEXIONS == 1
246 lua.Execute("JSON = loadstring(HttpGet('http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/JSON.lua')) ()");
247 const std::string url("http://orthanc.googlecode.com/hg/OrthancCppClient/SharedLibrary/Product.json");
248 #endif
249
246 std::string s; 250 std::string s;
247 lua.Execute(s, "print(HttpGet({}))"); 251 lua.Execute(s, "print(HttpGet({}))");
248 ASSERT_EQ("ERROR", Orthanc::Toolbox::StripSpaces(s)); 252 ASSERT_EQ("ERROR", Orthanc::Toolbox::StripSpaces(s));
249 253
250 #if UNIT_TESTS_WITH_HTTP_CONNEXIONS == 1 254 #if UNIT_TESTS_WITH_HTTP_CONNEXIONS == 1
251 lua.Execute(s, "print(string.len(HttpGet(\"" + url + "\")))"); 255 lua.Execute(s, "print(string.len(HttpGet(\"" + url + "\")))");
252 ASSERT_LE(1000, boost::lexical_cast<int>(Orthanc::Toolbox::StripSpaces(s))); 256 ASSERT_LE(100, boost::lexical_cast<int>(Orthanc::Toolbox::StripSpaces(s)));
253 257
254 // Parse a JSON file 258 // Parse a JSON file
255 lua.Execute(s, "print(HttpGet(\"" + url + "\", true)['Name'])"); 259 lua.Execute(s, "print(JSON:decode(HttpGet(\"" + url + "\")) ['Product'])");
256 ASSERT_EQ("MyOrthanc", Orthanc::Toolbox::StripSpaces(s)); 260 ASSERT_EQ("OrthancClient", Orthanc::Toolbox::StripSpaces(s));
257 #endif 261
258 262 #if 1
259 #if 0 263 // This part of the test can only be executed if one instance of
264 // Orthanc is running on the localhost
265
266 lua.Execute("modality = {}");
267 lua.Execute("table.insert(modality, 'ORTHANC')");
268 lua.Execute("table.insert(modality, 'localhost')");
269 lua.Execute("table.insert(modality, 4242)");
270
260 lua.Execute(s, "print(HttpPost(\"http://localhost:8042/tools/execute-script\", \"print('hello world')\"))"); 271 lua.Execute(s, "print(HttpPost(\"http://localhost:8042/tools/execute-script\", \"print('hello world')\"))");
261 ASSERT_EQ("hello world", Orthanc::Toolbox::StripSpaces(s)); 272 ASSERT_EQ("hello world", Orthanc::Toolbox::StripSpaces(s));
262 273
263 lua.Execute(s, "print(HttpPost(\"http://localhost:8042/tools/execute-script\", \"print('[10,42,1000]')\", true)[2])"); 274 lua.Execute(s, "print(JSON:decode(HttpPost(\"http://localhost:8042/tools/execute-script\", \"print('[10,42,1000]')\")) [2])");
264 ASSERT_EQ("42", Orthanc::Toolbox::StripSpaces(s)); 275 ASSERT_EQ("42", Orthanc::Toolbox::StripSpaces(s));
265 #endif 276
266 277 // Add/remove a modality with Lua
267 #if 0 278 Json::Value v;
268 lua.Execute(s, "print(HttpGet('http://localhost:8042/modalities'))"); 279 lua.Execute(s, "print(HttpGet('http://localhost:8042/modalities/lua'))");
269 lua.Execute(s, "print(HttpPut('http://localhost:8042/modalities/lua', '[ \"ORTHANC\", \"localhost\", 4242 ]'))"); 280 ASSERT_EQ(0, Orthanc::Toolbox::StripSpaces(s).size());
270 lua.Execute(s, "print(HttpGet('http://localhost:8042/modalities'))"); 281 lua.Execute(s, "print(HttpPut('http://localhost:8042/modalities/lua', JSON:encode(modality)))");
282 lua.Execute(v, "print(HttpGet('http://localhost:8042/modalities/lua'))");
283 ASSERT_TRUE(v.type() == Json::arrayValue);
271 lua.Execute(s, "print(HttpDelete('http://localhost:8042/modalities/lua'))"); 284 lua.Execute(s, "print(HttpDelete('http://localhost:8042/modalities/lua'))");
272 lua.Execute(s, "print(HttpGet('http://localhost:8042/modalities'))"); 285 lua.Execute(s, "print(HttpGet('http://localhost:8042/modalities/lua'))");
273 #endif 286 ASSERT_EQ(0, Orthanc::Toolbox::StripSpaces(s).size());
274 } 287 #endif
288
289 #endif
290 }