You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

255 lines
6.4 KiB
Lua

before_each(function()
lor = _G.lor
app = lor({
debug = true
})
Request = _G.request
Response = _G.response
req = Request:new()
res = Response:new()
end)
after_each(function()
lor = nil
app = nil
Request = nil
Response = nil
req = nil
res = nil
end)
describe("multi route: mounted on `app`", function()
it("array param", function()
local flag = 0
local func1 = function(req, res, next)
flag = 1
next()
end
local func2 = function(req, res, next)
flag = 2
next()
end
local last_func = function(req, res, next)
flag = req.query.flag or 3
end
app:get("/flag", {func1, func2, last_func})
app:erroruse(function(err, req, res, next)
assert.is.truthy(err) -- should not reach here.
flag = 999
end)
req.path = "/flag"
req.method = "get"
app:handle(req, res)
assert.is.equals(3, flag)
req.path = "/flag"
req.query = {flag=111}
req.method = "get"
app:handle(req, res)
assert.is.equals(111, flag)
end)
it("unpacked params", function()
local flag = 0
local func1 = function(req, res, next)
flag = 1
next()
end
local func2 = function(req, res, next)
flag = 2
next()
end
local last_func = function(req, res, next)
flag = req.query.flag or 3
end
app:get("/flag", func1, func2, last_func)
app:erroruse(function(err, req, res, next)
assert.is.truthy(err) -- should not reach here.
flag = 999
end)
req.path = "/flag"
req.method = "get"
app:handle(req, res)
assert.is.equals(3, flag)
req.path = "/flag"
req.query = {flag=111}
req.method = "get"
app:handle(req, res)
assert.is.equals(111, flag)
end)
end)
describe("multi route: mounted on `group router`", function()
it("array param", function()
local flag = 0
local test_router = lor:Router()
local func1 = function(req, res, next)
flag = 1
next()
end
local func2 = function(req, res, next)
flag = 2
next()
end
local last_func = function(req, res, next)
flag = req.query.flag or 3
end
test_router:get("/flag", {func1, func2, last_func})
app:use("/test", test_router())
app:erroruse(function(err, req, res, next)
assert.is.truthy(err) -- should not reach here.
flag = 999
end)
req.path = "/test/flag"
req.method = "get"
app:handle(req, res)
assert.is.equals(3, flag)
req.path = "/test/flag"
req.query = {flag=111}
req.method = "get"
app:handle(req, res)
assert.is.equals(111, flag)
end)
it("unpacked params", function()
local flag = 0
local test_router = lor:Router()
local func1 = function(req, res, next)
flag = 1
next()
end
local func2 = function(req, res, next)
flag = 2
next()
end
local last_func = function(req, res, next)
flag = req.query.flag or 3
end
test_router:get("/flag", func1, func2, last_func)
app:use("/test", test_router())
app:erroruse(function(err, req, res, next)
assert.is.truthy(err) -- should not reach here.
flag = 999
end)
req.path = "/test/flag"
req.method = "get"
app:handle(req, res)
assert.is.equals(3, flag)
req.path = "/test/flag"
req.query = {flag=111}
req.method = "get"
app:handle(req, res)
assert.is.equals(111, flag)
end)
end)
describe("multi route: muixed funcs for group router", function()
it("mixed params, case1", function()
local flag = 0
local test_router = lor:Router()
local func1 = function(req, res, next)
flag = 1
next()
end
local func2 = function(req, res, next)
flag = 2
next()
end
local last_func = function(req, res, next)
flag = 3
end
test_router:put("mixed", {func1, func2}, last_func)
app:use("/test", test_router())
req.path = "/test/mixed"
req.method = "put"
app:handle(req, res)
assert.is.equals(3, flag)
end)
it("mixed params, case2", function()
local flag = 0
local test_router = lor:Router()
local func1 = function(req, res, next)
flag = 1
next()
end
local func2 = function(req, res, next)
flag = 2
next()
end
local last_func = function(req, res, next)
flag = 3
end
test_router:get("mixed", {func1}, func2, {last_func})
app:use("/test", test_router())
req.path = "/test/mixed"
req.method = "get"
app:handle(req, res)
assert.is.equals(3, flag)
end)
end)
describe("multi route: muixed funcs for `app`", function()
it("mixed params, case1", function()
local flag = 0
local func1 = function(req, res, next)
flag = 1
next()
end
local func2 = function(req, res, next)
flag = 2
next()
end
local last_func = function(req, res, next)
flag = 3
end
app:get("mixed", {func1, func2}, last_func)
req.path = "/mixed"
req.method = "get"
app:handle(req, res)
assert.is.equals(3, flag)
end)
it("mixed params, case2", function()
local flag = 0
local func1 = function(req, res, next)
flag = 1
next()
end
local func2 = function(req, res, next)
flag = 2
next()
end
local func3 = function(req, res, next)
flag = 3
next()
end
local last_func = function(req, res, next)
flag = 4
end
app:get("mixed", {func1}, func2, {func3}, last_func)
req.path = "/mixed"
req.method = "get"
app:handle(req, res)
assert.is.equals(4, flag)
end)
end)