lune/tests/net/serve/requests.luau

45 lines
1.3 KiB
Text

local net = require("@lune/net")
local process = require("@lune/process")
local stdio = require("@lune/stdio")
local task = require("@lune/task")
local PORT = 8084
local URL = `http://127.0.0.1:{PORT}`
local RESPONSE = "Hello, lune!"
-- Serve should get proper path, query, and other request information
local handle = net.serve(PORT, function(request)
-- print("Got a request from", request.ip, "on port", request.port)
assert(type(request.path) == "string")
assert(type(request.query) == "table")
assert(type(request.query.key) == "table")
assert(type(request.query.key2) == "string")
assert(request.path == "/some/path")
assert(request.query.key[1] == "param1")
assert(request.query.key[2] == "param2")
assert(request.query.key2 == "param3")
return RESPONSE
end)
-- Serve should be able to handle at least 100 requests per second with a basic handler such as the above
local thread = task.delay(1, function()
stdio.ewrite("Serve should respond to requests in a reasonable amount of time\n")
task.wait(1)
process.exit(1)
end)
-- Serve should respond to requests we send, and keep responding until we stop it
for _ = 1, 100 do
local response = net.request(URL .. "/some/path?key=param1&key=param2&key2=param3").body
assert(response == RESPONSE, "Invalid response from server")
end
task.cancel(thread)
handle.stop()