48 lines
1.4 KiB
Lua
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
|