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
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)
|