Migrate dyndns to clanServices
This commit is contained in:
77
clanServices/dyndns/tests/vm/default.nix
Normal file
77
clanServices/dyndns/tests/vm/default.nix
Normal file
@@ -0,0 +1,77 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
name = "service-dyndns";
|
||||
|
||||
clan = {
|
||||
directory = ./.;
|
||||
inventory = {
|
||||
machines.server = { };
|
||||
|
||||
instances = {
|
||||
dyndns-test = {
|
||||
module.name = "@clan/dyndns";
|
||||
module.input = "self";
|
||||
roles.default.machines."server".settings = {
|
||||
server = {
|
||||
enable = true;
|
||||
domain = "test.example.com";
|
||||
port = 54805;
|
||||
acmeEmail = "test@example.com";
|
||||
};
|
||||
period = 1;
|
||||
settings = {
|
||||
"test.example.com" = {
|
||||
provider = "namecheap";
|
||||
domain = "example.com";
|
||||
secret_field_name = "password";
|
||||
extraSettings = {
|
||||
host = "test";
|
||||
server = "dynamicdns.park-your-domain.com";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nodes = {
|
||||
server = {
|
||||
# Disable firewall for testing
|
||||
networking.firewall.enable = false;
|
||||
|
||||
# Mock ACME for testing (avoid real certificate requests)
|
||||
security.acme.defaults.server = "https://localhost:14000/dir";
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
# Test that dyndns service starts (will fail without secrets, but that's expected)
|
||||
server.wait_for_unit("multi-user.target")
|
||||
|
||||
# Test that nginx service is running
|
||||
server.wait_for_unit("nginx.service")
|
||||
|
||||
# Test that nginx is listening on expected ports
|
||||
server.wait_for_open_port(80)
|
||||
server.wait_for_open_port(443)
|
||||
|
||||
# Test that the dyndns user was created
|
||||
# server.succeed("getent passwd dyndns")
|
||||
# server.succeed("getent group dyndns")
|
||||
#
|
||||
# Test that the home directory was created
|
||||
server.succeed("test -d /var/lib/dyndns")
|
||||
|
||||
# Test that nginx configuration includes our domain
|
||||
server.succeed("${pkgs.nginx}/bin/nginx -t")
|
||||
|
||||
print("All tests passed!")
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user