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.
44 lines
1.8 KiB
Zig
44 lines
1.8 KiB
Zig
const std = @import("std");
|
|
const types = @import("types.zig");
|
|
const status = @import("status.zig");
|
|
const server = @import("server.zig");
|
|
|
|
pub const Server = server.Server;
|
|
pub const Route = types.Route;
|
|
pub const Header = types.Header;
|
|
pub const Request = types.Request;
|
|
pub const Response = types.Response;
|
|
pub const Method = types.Method;
|
|
pub const HTTP_Version = types.HTTP_Version;
|
|
|
|
test "Test zerve test-app, run server and serve test page" {
|
|
// Set route
|
|
const rt = [_]types.Route{.{ "/", handlefn }};
|
|
try Server.listen("0.0.0.0", 8080, &rt, std.testing.allocator);
|
|
}
|
|
// Function for test
|
|
fn handlefn(req: *types.Request) types.Response {
|
|
const alloc = std.testing.allocator;
|
|
// collect headers of Request
|
|
var headers = std.ArrayList(u8).init(alloc);
|
|
defer headers.deinit();
|
|
for (req.headers) |header| {
|
|
headers.appendSlice(header.key) catch {};
|
|
headers.appendSlice(": ") catch {};
|
|
headers.appendSlice(header.value) catch {};
|
|
headers.appendSlice("\n") catch {};
|
|
}
|
|
// collect cookies of Request
|
|
var cookies = std.ArrayList(u8).init(alloc);
|
|
defer cookies.deinit();
|
|
for (req.cookies) |cookie| {
|
|
cookies.appendSlice(cookie.name) catch {};
|
|
cookies.appendSlice(" = ") catch {};
|
|
cookies.appendSlice(cookie.value) catch {};
|
|
cookies.appendSlice("\n") catch {};
|
|
}
|
|
const res_string = std.fmt.allocPrint(alloc, "<h1>Run Server Test OK!</h1><br><h3>URI: {s}</h3><br><h3>Sent headers:</h3><br><pre><code>{s}</code></pre><br><h3>Sent Cookies:</h3><br><pre><code>{s}</code></pre><br><h3>Request body:</h3><br>{s}", .{ req.uri, headers.items, cookies.items, req.body }) catch "Memory error";
|
|
var res = types.Response{ .body = res_string, .cookies = &[_]Response.Cookie{.{ .name = "Test-Cookie", .value = "Test", .maxAge = 60 * 3 }} };
|
|
return res;
|
|
}
|