From 1172db2a8a2393a8fc6b6b4091954005490484fb Mon Sep 17 00:00:00 2001 From: floscodes Date: Thu, 18 May 2023 00:37:51 +0200 Subject: [PATCH] new server test --- src/server.zig | 5 ++++- src/zerve.zig | 26 ++++++++++++++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/server.zig b/src/server.zig index 99337de..38e0738 100644 --- a/src/server.zig +++ b/src/server.zig @@ -51,7 +51,10 @@ pub const Server = struct { // Detect Content-Length for assigning the body const end_index = try std.fmt.parseUnsigned(u8, req.header("Content-Length").?, 0); req.body = buffer.items[header_index + 4 .. @as(usize, end_index + 1)]; - } else break; + } else { + req.body = ""; + break; + } } } defer allocator.free(req.headers); diff --git a/src/zerve.zig b/src/zerve.zig index 9b510fd..ad2a19e 100644 --- a/src/zerve.zig +++ b/src/zerve.zig @@ -16,18 +16,28 @@ test "Test zerve test-app, run server and serve test page" { const rt = [_]types.Route{.{ "/", handlefn }}; try Server.listen("0.0.0.0", 8080, &rt, std.testing.allocator); } -// Function for test "Run Server" +// Function for test fn handlefn(req: *types.Request) types.Response { - // print headers of Request - std.debug.print("\nSent headers:\n", .{}); + const alloc = std.testing.allocator; + // collect headers of Request + var headers = std.ArrayList(u8).init(alloc); + defer headers.deinit(); for (req.headers) |header| { - std.debug.print("{s}: {s}", .{ header.key, header.value }); + headers.appendSlice(header.key) catch {}; + headers.appendSlice(": ") catch {}; + headers.appendSlice(header.value) catch {}; + headers.appendSlice("\n") catch {}; } - // print cookies of Request - std.debug.print("\nSent cookies:\n", .{}); + // collect cookies of Request + var cookies = std.ArrayList(u8).init(alloc); + defer cookies.deinit(); for (req.cookies) |cookie| { - std.debug.print("{s}={s}\n", .{ cookie.name, cookie.value }); + cookies.appendSlice(cookie.name) catch {}; + cookies.appendSlice(" = ") catch {}; + cookies.appendSlice(cookie.value) catch {}; + cookies.appendSlice("\n") catch {}; } - var res = types.Response{ .body = "

Run Server Test OK!

", .cookies = &[_]Response.Cookie{.{ .name = "Test-Cookie", .value = "Test", .maxAge = 60 * 60 * 5 }} }; + const res_string = std.fmt.allocPrint(alloc, "

Run Server Test OK!


Sent headers:


{s}

Sent Cookies:


{s}

Request body:


{s}", .{ 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 * 60 * 5 }} }; return res; }