apisix/t/lib/test_admin.lua

52 lines
1.1 KiB
Lua
Raw Normal View History

local json = require("cjson")
local dir_names = {}
local _M = {}
local function com_tab(pattern, data, deep)
deep = deep or 1
for k, v in pairs(pattern) do
dir_names[deep] = k
if type(v) == "table" then
local ok, err = com_tab(v, data[k], deep + 1)
if not ok then
return false, err
end
elseif v ~= data[k] then
return false, "path: " .. table.concat(dir_names, "->", 1, deep)
.. " expect: " .. v .. " got: " .. data[k]
end
end
return true
end
function _M.test(uri, method, body, pattern)
local res = ngx.location.capture(uri,{method = method,body = body})
if res.status >= 300 then
return res.status, res.body
end
if pattern == nil then
return res.status, "passed", res.body
end
local res_data = json.decode(res.body)
local ok, err = com_tab(json.decode(pattern), res_data)
if not ok then
return 500, "failed, " .. err, res_data
end
return 200, "passed", res_data
end
return _M