Files
2026-07-13 12:32:21 +08:00

48 lines
1.4 KiB
Lua

--- A http_mock subclass for tapping.
-- @module spec.helpers.http_mock.tapping
local http_mock = require "spec.helpers.http_mock"
local tapping = {}
-- create a new tapping route
-- @tparam string|number target the target host/port of the tapping route
-- @return the tapping route instance
function tapping.new_tapping_route(target)
if tonumber(target) then
-- TODO: handle the resovler!
target = "http://127.0.0.1:" .. target
end
if not target:find("://") then
target = "http://" .. target
end
return {
["/"] = {
directives = [[proxy_pass ]] .. target .. [[;]],
}
}
end
--- create a new `http_mock.tapping` instance with a tapping route
-- @tparam string|number target the target host/port of the tapping route
-- @tparam[opt] table|string|number listens see `http_mock.new`
-- @tparam[opt="servroot_tapping"] string prefix the prefix of the mock server
-- @tparam[opt={}] table log_opts see `http_mock.new`, uses the defaults, with `req_large_body` enabled
-- @treturn http_mock.tapping a tapping instance
-- @treturn string the port the mock server listens to
function tapping.new(target, listens, prefix, log_opts)
---@diagnostic disable-next-line: return-type-mismatch
return http_mock.new(listens, tapping.new_tapping_route(target), {
prefix = prefix or "servroot_tapping",
log_opts = log_opts or {
req = true,
req_body = true,
req_large_body = true,
},
})
end
return tapping