1
0
Fork 0
mirror of https://github.com/zigzap/zap.git synced 2025-10-20 23:24:09 +00:00
zap/src/tests/test_sendfile.zig

64 lines
1.6 KiB
Zig

const std = @import("std");
const zap = @import("zap");
var buffer: [1024]u8 = undefined;
var read_len: ?usize = null;
const testfile = @embedFile("testfile.txt");
fn makeRequest(a: std.mem.Allocator, url: []const u8) !void {
const uri = try std.Uri.parse(url);
var h = std.http.Headers{ .allocator = a };
defer h.deinit();
var http_client: std.http.Client = .{ .allocator = a };
defer http_client.deinit();
var req = try http_client.request(.GET, uri, h, .{});
defer req.deinit();
try req.start();
try req.wait();
read_len = try req.readAll(&buffer);
zap.fio_stop();
}
fn makeRequestThread(a: std.mem.Allocator, url: []const u8) !std.Thread {
return try std.Thread.spawn(.{}, makeRequest, .{ a, url });
}
pub fn on_request(r: zap.SimpleRequest) void {
r.sendFile("src/tests/testfile.txt") catch unreachable;
}
test "send file" {
var allocator = std.testing.allocator;
// setup listener
var listener = zap.SimpleHttpListener.init(
.{
.port = 3002,
.on_request = on_request,
.log = false,
.max_clients = 10,
.max_body_size = 1 * 1024,
},
);
zap.enableDebugLog();
try listener.listen();
const thread = try makeRequestThread(allocator, "http://127.0.0.1:3002/?file=src/tests/testfile.txt");
defer thread.join();
zap.start(.{
.threads = 1,
.workers = 1,
});
if (read_len) |rl| {
try std.testing.expectEqual(testfile.len, rl);
try std.testing.expectEqualSlices(u8, testfile, buffer[0..rl]);
} else {
return error.Wrong;
}
}