mirror of
https://github.com/zigzap/zap.git
synced 2025-10-21 07:34:08 +00:00
fix auth tests b/c of new zap.Endpoint
This commit is contained in:
parent
7f82a6b350
commit
3856fceb9f
2 changed files with 67 additions and 70 deletions
|
@ -73,9 +73,10 @@ const EndpointWrapper = struct {
|
||||||
.DELETE => return self.wrapped.*.delete(r),
|
.DELETE => return self.wrapped.*.delete(r),
|
||||||
.PATCH => return self.wrapped.*.patch(r),
|
.PATCH => return self.wrapped.*.patch(r),
|
||||||
.OPTIONS => return self.wrapped.*.options(r),
|
.OPTIONS => return self.wrapped.*.options(r),
|
||||||
else => {},
|
else => {
|
||||||
|
// TODO: log that method is ignored
|
||||||
|
},
|
||||||
}
|
}
|
||||||
// TODO: log that req fn is not implemented on this EP
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -197,6 +198,10 @@ pub const Listener = struct {
|
||||||
/// callback in the provided ListenerSettings, this request callback will be
|
/// callback in the provided ListenerSettings, this request callback will be
|
||||||
/// called every time a request arrives that no endpoint matches.
|
/// called every time a request arrives that no endpoint matches.
|
||||||
pub fn init(a: std.mem.Allocator, l: ListenerSettings) Self {
|
pub fn init(a: std.mem.Allocator, l: ListenerSettings) Self {
|
||||||
|
// reset the global in case init is called multiple times, as is the
|
||||||
|
// case in the authentication tests
|
||||||
|
endpoints = .empty;
|
||||||
|
|
||||||
// take copy of listener settings before modifying the callback field
|
// take copy of listener settings before modifying the callback field
|
||||||
var ls = l;
|
var ls = l;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const zap = @import("zap");
|
const zap = @import("zap");
|
||||||
const Authenticators = zap.Auth;
|
const Authenticators = zap.Auth;
|
||||||
const Endpoint = zap.Endpoint;
|
|
||||||
const fio = zap;
|
const fio = zap;
|
||||||
const util = zap;
|
const util = zap;
|
||||||
|
|
||||||
|
@ -102,23 +101,6 @@ const HTTP_RESPONSE: []const u8 =
|
||||||
;
|
;
|
||||||
var received_response: []const u8 = "null";
|
var received_response: []const u8 = "null";
|
||||||
|
|
||||||
fn endpoint_http_get(e: *Endpoint, r: zap.Request) void {
|
|
||||||
_ = e;
|
|
||||||
r.sendBody(HTTP_RESPONSE) catch return;
|
|
||||||
received_response = HTTP_RESPONSE;
|
|
||||||
std.time.sleep(1 * std.time.ns_per_s);
|
|
||||||
zap.stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn endpoint_http_unauthorized(e: *Endpoint, r: zap.Request) void {
|
|
||||||
_ = e;
|
|
||||||
r.setStatus(.unauthorized);
|
|
||||||
r.sendBody("UNAUTHORIZED ACCESS") catch return;
|
|
||||||
received_response = "UNAUTHORIZED";
|
|
||||||
std.time.sleep(1 * std.time.ns_per_s);
|
|
||||||
zap.stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// http client code for in-process sending of http request
|
// http client code for in-process sending of http request
|
||||||
//
|
//
|
||||||
|
@ -165,6 +147,31 @@ fn makeRequestThread(a: std.mem.Allocator, url: []const u8, auth: ?ClientAuthReq
|
||||||
return try std.Thread.spawn(.{}, makeRequest, .{ a, url, auth });
|
return try std.Thread.spawn(.{}, makeRequest, .{ a, url, auth });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub const Endpoint = struct {
|
||||||
|
path: []const u8,
|
||||||
|
|
||||||
|
pub fn get(e: *Endpoint, r: zap.Request) void {
|
||||||
|
_ = e;
|
||||||
|
r.sendBody(HTTP_RESPONSE) catch return;
|
||||||
|
received_response = HTTP_RESPONSE;
|
||||||
|
std.time.sleep(1 * std.time.ns_per_s);
|
||||||
|
zap.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn unauthorized(e: *Endpoint, r: zap.Request) void {
|
||||||
|
_ = e;
|
||||||
|
r.setStatus(.unauthorized);
|
||||||
|
r.sendBody("UNAUTHORIZED ACCESS") catch return;
|
||||||
|
received_response = "UNAUTHORIZED";
|
||||||
|
std.time.sleep(1 * std.time.ns_per_s);
|
||||||
|
zap.stop();
|
||||||
|
}
|
||||||
|
pub fn post(_: *Endpoint, _: zap.Request) void {}
|
||||||
|
pub fn put(_: *Endpoint, _: zap.Request) void {}
|
||||||
|
pub fn delete(_: *Endpoint, _: zap.Request) void {}
|
||||||
|
pub fn patch(_: *Endpoint, _: zap.Request) void {}
|
||||||
|
pub fn options(_: *Endpoint, _: zap.Request) void {}
|
||||||
|
};
|
||||||
//
|
//
|
||||||
// end of http client code
|
// end of http client code
|
||||||
//
|
//
|
||||||
|
@ -187,11 +194,9 @@ test "BearerAuthSingle authenticateRequest OK" {
|
||||||
defer listener.deinit();
|
defer listener.deinit();
|
||||||
|
|
||||||
// create mini endpoint
|
// create mini endpoint
|
||||||
var ep = Endpoint.init(.{
|
var ep: Endpoint = .{
|
||||||
.path = "/test",
|
.path = "/test",
|
||||||
.get = endpoint_http_get,
|
};
|
||||||
.unauthorized = endpoint_http_unauthorized,
|
|
||||||
});
|
|
||||||
|
|
||||||
// create authenticator
|
// create authenticator
|
||||||
const Authenticator = Authenticators.BearerSingle;
|
const Authenticator = Authenticators.BearerSingle;
|
||||||
|
@ -199,10 +204,10 @@ test "BearerAuthSingle authenticateRequest OK" {
|
||||||
defer authenticator.deinit();
|
defer authenticator.deinit();
|
||||||
|
|
||||||
// create authenticating endpoint
|
// create authenticating endpoint
|
||||||
const BearerAuthEndpoint = Endpoint.Authenticating(Authenticator);
|
const BearerAuthEndpoint = zap.Endpoint.Authenticating(Endpoint, Authenticator);
|
||||||
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
||||||
|
|
||||||
try listener.register(auth_ep.endpoint());
|
try listener.register(&auth_ep);
|
||||||
|
|
||||||
listener.listen() catch {};
|
listener.listen() catch {};
|
||||||
// std.debug.print("\n\n*******************************************\n", .{});
|
// std.debug.print("\n\n*******************************************\n", .{});
|
||||||
|
@ -240,11 +245,9 @@ test "BearerAuthSingle authenticateRequest test-unauthorized" {
|
||||||
defer listener.deinit();
|
defer listener.deinit();
|
||||||
|
|
||||||
// create mini endpoint
|
// create mini endpoint
|
||||||
var ep = Endpoint.init(.{
|
var ep: Endpoint = .{
|
||||||
.path = "/test",
|
.path = "/test",
|
||||||
.get = endpoint_http_get,
|
};
|
||||||
.unauthorized = endpoint_http_unauthorized,
|
|
||||||
});
|
|
||||||
|
|
||||||
const Set = std.StringHashMap(void);
|
const Set = std.StringHashMap(void);
|
||||||
var set = Set.init(a); // set
|
var set = Set.init(a); // set
|
||||||
|
@ -258,12 +261,12 @@ test "BearerAuthSingle authenticateRequest test-unauthorized" {
|
||||||
defer authenticator.deinit();
|
defer authenticator.deinit();
|
||||||
|
|
||||||
// create authenticating endpoint
|
// create authenticating endpoint
|
||||||
const BearerAuthEndpoint = Endpoint.Authenticating(Authenticator);
|
const BearerAuthEndpoint = zap.Endpoint.Authenticating(Endpoint, Authenticator);
|
||||||
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
||||||
|
|
||||||
try listener.register(auth_ep.endpoint());
|
try listener.register(&auth_ep);
|
||||||
|
|
||||||
listener.listen() catch {};
|
try listener.listen();
|
||||||
// std.debug.print("Waiting for the following:\n", .{});
|
// std.debug.print("Waiting for the following:\n", .{});
|
||||||
// std.debug.print("./zig-out/bin/http_client http://127.0.0.1:3000/test Bearer invalid\r", .{});
|
// std.debug.print("./zig-out/bin/http_client http://127.0.0.1:3000/test Bearer invalid\r", .{});
|
||||||
|
|
||||||
|
@ -277,6 +280,7 @@ test "BearerAuthSingle authenticateRequest test-unauthorized" {
|
||||||
});
|
});
|
||||||
|
|
||||||
try std.testing.expectEqualStrings("UNAUTHORIZED", received_response);
|
try std.testing.expectEqualStrings("UNAUTHORIZED", received_response);
|
||||||
|
std.debug.print("\nI made it\n", .{});
|
||||||
}
|
}
|
||||||
|
|
||||||
test "BearerAuthMulti authenticateRequest OK" {
|
test "BearerAuthMulti authenticateRequest OK" {
|
||||||
|
@ -297,11 +301,9 @@ test "BearerAuthMulti authenticateRequest OK" {
|
||||||
defer listener.deinit();
|
defer listener.deinit();
|
||||||
|
|
||||||
// create mini endpoint
|
// create mini endpoint
|
||||||
var ep = Endpoint.init(.{
|
var ep: Endpoint = .{
|
||||||
.path = "/test",
|
.path = "/test",
|
||||||
.get = endpoint_http_get,
|
};
|
||||||
.unauthorized = endpoint_http_unauthorized,
|
|
||||||
});
|
|
||||||
|
|
||||||
// create authenticator
|
// create authenticator
|
||||||
const Authenticator = Authenticators.BearerSingle;
|
const Authenticator = Authenticators.BearerSingle;
|
||||||
|
@ -309,12 +311,12 @@ test "BearerAuthMulti authenticateRequest OK" {
|
||||||
defer authenticator.deinit();
|
defer authenticator.deinit();
|
||||||
|
|
||||||
// create authenticating endpoint
|
// create authenticating endpoint
|
||||||
const BearerAuthEndpoint = Endpoint.Authenticating(Authenticator);
|
const BearerAuthEndpoint = zap.Endpoint.Authenticating(Endpoint, Authenticator);
|
||||||
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
||||||
|
|
||||||
try listener.register(auth_ep.endpoint());
|
try listener.register(&auth_ep);
|
||||||
|
|
||||||
listener.listen() catch {};
|
try listener.listen();
|
||||||
// std.debug.print("Waiting for the following:\n", .{});
|
// std.debug.print("Waiting for the following:\n", .{});
|
||||||
// std.debug.print("./zig-out/bin/http_client_runner http://127.0.0.1:3000/test Bearer " ++ token ++ "\r", .{});
|
// std.debug.print("./zig-out/bin/http_client_runner http://127.0.0.1:3000/test Bearer " ++ token ++ "\r", .{});
|
||||||
|
|
||||||
|
@ -348,11 +350,9 @@ test "BearerAuthMulti authenticateRequest test-unauthorized" {
|
||||||
defer listener.deinit();
|
defer listener.deinit();
|
||||||
|
|
||||||
// create mini endpoint
|
// create mini endpoint
|
||||||
var ep = Endpoint.init(.{
|
var ep: Endpoint = .{
|
||||||
.path = "/test",
|
.path = "/test",
|
||||||
.get = endpoint_http_get,
|
};
|
||||||
.unauthorized = endpoint_http_unauthorized,
|
|
||||||
});
|
|
||||||
|
|
||||||
// create authenticator
|
// create authenticator
|
||||||
const Authenticator = Authenticators.BearerSingle;
|
const Authenticator = Authenticators.BearerSingle;
|
||||||
|
@ -360,10 +360,10 @@ test "BearerAuthMulti authenticateRequest test-unauthorized" {
|
||||||
defer authenticator.deinit();
|
defer authenticator.deinit();
|
||||||
|
|
||||||
// create authenticating endpoint
|
// create authenticating endpoint
|
||||||
const BearerAuthEndpoint = Endpoint.Authenticating(Authenticator);
|
const BearerAuthEndpoint = zap.Endpoint.Authenticating(Endpoint, Authenticator);
|
||||||
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
||||||
|
|
||||||
try listener.register(auth_ep.endpoint());
|
try listener.register(&auth_ep);
|
||||||
|
|
||||||
listener.listen() catch {};
|
listener.listen() catch {};
|
||||||
// std.debug.print("Waiting for the following:\n", .{});
|
// std.debug.print("Waiting for the following:\n", .{});
|
||||||
|
@ -399,11 +399,9 @@ test "BasicAuth Token68 authenticateRequest" {
|
||||||
defer listener.deinit();
|
defer listener.deinit();
|
||||||
|
|
||||||
// create mini endpoint
|
// create mini endpoint
|
||||||
var ep = Endpoint.init(.{
|
var ep: Endpoint = .{
|
||||||
.path = "/test",
|
.path = "/test",
|
||||||
.get = endpoint_http_get,
|
};
|
||||||
.unauthorized = endpoint_http_unauthorized,
|
|
||||||
});
|
|
||||||
// create a set of Token68 entries
|
// create a set of Token68 entries
|
||||||
const Set = std.StringHashMap(void);
|
const Set = std.StringHashMap(void);
|
||||||
var set = Set.init(a); // set
|
var set = Set.init(a); // set
|
||||||
|
@ -416,10 +414,10 @@ test "BasicAuth Token68 authenticateRequest" {
|
||||||
defer authenticator.deinit();
|
defer authenticator.deinit();
|
||||||
|
|
||||||
// create authenticating endpoint
|
// create authenticating endpoint
|
||||||
const BearerAuthEndpoint = Endpoint.Authenticating(Authenticator);
|
const BearerAuthEndpoint = zap.Endpoint.Authenticating(Endpoint, Authenticator);
|
||||||
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
||||||
|
|
||||||
try listener.register(auth_ep.endpoint());
|
try listener.register(&auth_ep);
|
||||||
|
|
||||||
listener.listen() catch {};
|
listener.listen() catch {};
|
||||||
// std.debug.print("Waiting for the following:\n", .{});
|
// std.debug.print("Waiting for the following:\n", .{});
|
||||||
|
@ -455,11 +453,9 @@ test "BasicAuth Token68 authenticateRequest test-unauthorized" {
|
||||||
defer listener.deinit();
|
defer listener.deinit();
|
||||||
|
|
||||||
// create mini endpoint
|
// create mini endpoint
|
||||||
var ep = Endpoint.init(.{
|
var ep: Endpoint = .{
|
||||||
.path = "/test",
|
.path = "/test",
|
||||||
.get = endpoint_http_get,
|
};
|
||||||
.unauthorized = endpoint_http_unauthorized,
|
|
||||||
});
|
|
||||||
// create a set of Token68 entries
|
// create a set of Token68 entries
|
||||||
const Set = std.StringHashMap(void);
|
const Set = std.StringHashMap(void);
|
||||||
var set = Set.init(a); // set
|
var set = Set.init(a); // set
|
||||||
|
@ -472,10 +468,10 @@ test "BasicAuth Token68 authenticateRequest test-unauthorized" {
|
||||||
defer authenticator.deinit();
|
defer authenticator.deinit();
|
||||||
|
|
||||||
// create authenticating endpoint
|
// create authenticating endpoint
|
||||||
const BearerAuthEndpoint = Endpoint.Authenticating(Authenticator);
|
const BearerAuthEndpoint = zap.Endpoint.Authenticating(Endpoint, Authenticator);
|
||||||
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
||||||
|
|
||||||
try listener.register(auth_ep.endpoint());
|
try listener.register(&auth_ep);
|
||||||
|
|
||||||
listener.listen() catch {};
|
listener.listen() catch {};
|
||||||
// std.debug.print("Waiting for the following:\n", .{});
|
// std.debug.print("Waiting for the following:\n", .{});
|
||||||
|
@ -510,11 +506,9 @@ test "BasicAuth UserPass authenticateRequest" {
|
||||||
defer listener.deinit();
|
defer listener.deinit();
|
||||||
|
|
||||||
// create mini endpoint
|
// create mini endpoint
|
||||||
var ep = Endpoint.init(.{
|
var ep: Endpoint = .{
|
||||||
.path = "/test",
|
.path = "/test",
|
||||||
.get = endpoint_http_get,
|
};
|
||||||
.unauthorized = endpoint_http_unauthorized,
|
|
||||||
});
|
|
||||||
|
|
||||||
// create a set of User -> Pass entries
|
// create a set of User -> Pass entries
|
||||||
const Map = std.StringHashMap([]const u8);
|
const Map = std.StringHashMap([]const u8);
|
||||||
|
@ -538,10 +532,10 @@ test "BasicAuth UserPass authenticateRequest" {
|
||||||
defer authenticator.deinit();
|
defer authenticator.deinit();
|
||||||
|
|
||||||
// create authenticating endpoint
|
// create authenticating endpoint
|
||||||
const BearerAuthEndpoint = Endpoint.Authenticating(Authenticator);
|
const BearerAuthEndpoint = zap.Endpoint.Authenticating(Endpoint, Authenticator);
|
||||||
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
||||||
|
|
||||||
try listener.register(auth_ep.endpoint());
|
try listener.register(&auth_ep);
|
||||||
|
|
||||||
listener.listen() catch {};
|
listener.listen() catch {};
|
||||||
// std.debug.print("Waiting for the following:\n", .{});
|
// std.debug.print("Waiting for the following:\n", .{});
|
||||||
|
@ -576,11 +570,9 @@ test "BasicAuth UserPass authenticateRequest test-unauthorized" {
|
||||||
defer listener.deinit();
|
defer listener.deinit();
|
||||||
|
|
||||||
// create mini endpoint
|
// create mini endpoint
|
||||||
var ep = Endpoint.init(.{
|
var ep: Endpoint = .{
|
||||||
.path = "/test",
|
.path = "/test",
|
||||||
.get = endpoint_http_get,
|
};
|
||||||
.unauthorized = endpoint_http_unauthorized,
|
|
||||||
});
|
|
||||||
|
|
||||||
// create a set of User -> Pass entries
|
// create a set of User -> Pass entries
|
||||||
const Map = std.StringHashMap([]const u8);
|
const Map = std.StringHashMap([]const u8);
|
||||||
|
@ -605,10 +597,10 @@ test "BasicAuth UserPass authenticateRequest test-unauthorized" {
|
||||||
defer authenticator.deinit();
|
defer authenticator.deinit();
|
||||||
|
|
||||||
// create authenticating endpoint
|
// create authenticating endpoint
|
||||||
const BearerAuthEndpoint = Endpoint.Authenticating(Authenticator);
|
const BearerAuthEndpoint = zap.Endpoint.Authenticating(Endpoint, Authenticator);
|
||||||
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
var auth_ep = BearerAuthEndpoint.init(&ep, &authenticator);
|
||||||
|
|
||||||
try listener.register(auth_ep.endpoint());
|
try listener.register(&auth_ep);
|
||||||
|
|
||||||
listener.listen() catch {};
|
listener.listen() catch {};
|
||||||
// std.debug.print("Waiting for the following:\n", .{});
|
// std.debug.print("Waiting for the following:\n", .{});
|
||||||
|
|
Loading…
Add table
Reference in a new issue