blob: 946ef610cd58c1d26b83ce55b21dc9ea849e26f1 [file] [log] [blame]
# SPDX-FileCopyrightText: 2024 Clicks Codes
#
# SPDX-License-Identifier: GPL-3.0-only
{ lib, ... }: let
tailscaleAuthWithRoute = {
"calibre.clicks.codes" = {
routes."/somePath" = lib.home-manager.hm.dag.entryAnywhere {
host = "generic";
port = 1024;
_type = "reverseProxy";
headers = null;
};
dnsProvider = "cloudflare";
service = null;
authWith = "tailscale";
enableHttp = false;
};
};
serviceAndRoutes = {
"calibre.clicks.codes" = {
routes."/somePath" = lib.home-manager.hm.dag.entryAnywhere {
host = "generic";
port = 1024;
_type = "reverseProxy";
headers = null;
};
dnsProvider = "cloudflare";
service = {
host = "generic";
port = 1024;
_type = "reverseProxy";
headers = null;
};
authWith = "tailscale";
enableHttp = false;
};
};
neitherServiceOrRoutes = {
"calibre.clicks.codes" = {
routes = null;
dnsProvider = "cloudflare";
service = null;
authWith = "tailscale";
enableHttp = false;
};
};
in {
testAssertTailscaleAuthServiceOnlyFail = {
/* This is NOT considered a step, here we test that it passes through input */
expr = lib.clicks.nginx.http.internal.assertTailscaleAuthServiceOnly tailscaleAuthWithRoute;
expectedError = {
type = "ThrownError";
msg = "calibre.clicks.codes: You may not use tailscale auth when manually specifying `routes`. Please use `service` instead";
};
};
testAssertExactlyOneOServiceOrRoutesBothProvidedFail = {
expr = lib.clicks.nginx.http.internal.assertExactlyOneOfServiceOrRoutes serviceAndRoutes;
expectedError = {
type = "ThrownError";
msg = "calibre.clicks.codes: You may only provide one of `service` or `routes`";
};
};
testAssertExactlyOneOfServiceOrRoutesNeitherProvidedFail = {
expr = lib.clicks.nginx.http.internal.assertExactlyOneOfServiceOrRoutes neitherServiceOrRoutes;
expectedError = {
type = "ThrownError";
msg = "calibre.clicks.codes: You must provide one of `service` or `routes`";
};
};
}