lua-xmlrpc/tests/httptest.lua

103 lines
2.8 KiB
Lua
Executable File

---------------------------------------------------------------------
-- XML-RPC Automatic Tests
-- See Copyright Notice in license.html
-----------------------------------------------------------------------
require"xmlrpc.http"
local function init_launcher(launcher)
if launcher == 'cgilua' then
require"cgilua"
cgilua.htmlheader()
io.write = function(str)
cgilua.put(string.gsub(str, '\n','<br>'))
end --io.write
end --if
end
local function dumpt(t)
for k,v in pairs(t) do
io.write('\nk='..tostring(k)..'\tv='..tostring(v))
if type(v) == 'table' then dumpt(v) end
end --for
end
local function test(url, rtype, rvalue, method, args)
local status, res
io.write('\nURL='..url..'\nMETHOD='..method..'\nPARAMETERS=')
io.write(unpack(args or {'void'}))
if args then
status, xmlstatus, res = pcall( xmlrpc.http.call,url, method, unpack(args))
else
status, xmlstatus, res = pcall( xmlrpc.http.call,url, method)
end --if
if not status then
io.write('\nFAILURE! '..xmlstatus)
else
if not xmlstatus and rtype ~= 'failure' then
io.write('\nFAILURE! '..res)
else
io.write('\nreturn type expected= '..rtype)
if type(res) == rtype or (not xmlstatus and rtype == 'failure') then
io.write(' (OK)')
else
io.write(' (FAILURE) returning a '..type(res))
end --if
if rvalue then
io.write('\nvalue expected='..tostring(rvalue))
if type(res) == 'table' then
dumpt(res)
elseif tostring(rvalue) == tostring(res) then
io.write(' (OK)')
else
io.write(' (FAILURE) value returned='..tostring(res))
end --if
end --if
end --if
end --if
io.write('\n')
end
function syndic8()
test( "http://www.syndic8.com/xmlrpc.php", "string", nil, "syndic8.GetFeedCount" )
end
local server = 'http://localhost:80/server.lua'
function calc()
test( server, 'number', '25', 'calc.add', {10,15} )
test( server, 'string', '0.1v', 'calc.getVersion' )
test( server, 'boolean', 'true', 'calc.isprime', {7} )
test( server, 'boolean', 'false', 'calc.isprime', {80} )
test( server, 'table', {{1,0},{0,1}}, 'calc.MID' )
test( server, 'failure', 'Unavailable method', 'calc' )
test( server, 'failure', 'Unavailable method', 'calc.MID2' )
test( server, 'failure', 'Unavailable method', 'foo', {2} )
test( server, 'failure', 'Unavailable method', 'foo.foo2.foo3', {3,4,5} )
-- test( 'http://localhost:82/calc.xmlrpc', 'number', '25', 'calc.add', {10,15} )
end
local launcher = {
'lua',
'cgilua',
}
local tests = {
[1] = { name='SYNDIC8', func=syndic8 },
[2] = { name='CALCULATOR', func=calc },
}
init_launcher(launcher[1])
io.write(
[[
LuaXMLRPC - Automatic Tests
0.1v
]]
)
for k,v in pairs( tests ) do
io.write( "\n\nT"..k.." - "..v.name.."\n" )
v.func()
end --for