nixos/wakapi; fix logical errors; add NixOS test (#350435)

This commit is contained in:
Franz Pletz 2024-10-22 19:02:05 +02:00 committed by GitHub
commit eae71219ea
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 45 additions and 4 deletions

View File

@ -182,21 +182,21 @@ in
message = "Either `services.wakapi.passwordSalt` or `services.wakapi.passwordSaltFile` must be set."; message = "Either `services.wakapi.passwordSalt` or `services.wakapi.passwordSaltFile` must be set.";
} }
{ {
assertion = cfg.passwordSalt != null -> cfg.passwordSaltFile != null; assertion = !(cfg.passwordSalt != null && cfg.passwordSaltFile != null);
message = "Both `services.wakapi.passwordSalt` `services.wakapi.passwordSaltFile` should not be set at the same time."; message = "Both `services.wakapi.passwordSalt` `services.wakapi.passwordSaltFile` should not be set at the same time.";
} }
{ {
assertion = cfg.smtpPassword != null -> cfg.smtpPasswordFile != null; assertion = !(cfg.smtpPassword != null && cfg.smtpPasswordFile != null);
message = "Both `services.wakapi.smtpPassword` `services.wakapi.smtpPasswordFile` should not be set at the same time."; message = "Both `services.wakapi.smtpPassword` `services.wakapi.smtpPasswordFile` should not be set at the same time.";
} }
{ {
assertion = cfg.db.createLocally -> cfg.db.dialect != null; assertion = cfg.database.createLocally -> cfg.settings.db.dialect != null;
message = "`services.wakapi.database.createLocally` is true, but a database dialect is not set!"; message = "`services.wakapi.database.createLocally` is true, but a database dialect is not set!";
} }
]; ];
warnings = [ warnings = [
(lib.optionalString (cfg.db.createLocall -> cfg.db.dialect != "postgres") '' (lib.optionalString (cfg.database.createLocally -> cfg.settings.db.dialect != "postgres") ''
You have enabled automatic database configuration, but the database dialect is not set to "posgres". You have enabled automatic database configuration, but the database dialect is not set to "posgres".
The Wakapi module only supports for PostgreSQL. Please set `services.wakapi.database.createLocally` The Wakapi module only supports for PostgreSQL. Please set `services.wakapi.database.createLocally`

View File

@ -1108,6 +1108,7 @@ in {
vscode-remote-ssh = handleTestOn ["x86_64-linux"] ./vscode-remote-ssh.nix {}; vscode-remote-ssh = handleTestOn ["x86_64-linux"] ./vscode-remote-ssh.nix {};
vscodium = discoverTests (import ./vscodium.nix); vscodium = discoverTests (import ./vscodium.nix);
vsftpd = handleTest ./vsftpd.nix {}; vsftpd = handleTest ./vsftpd.nix {};
wakapi = handleTest ./wakapi.nix {};
warzone2100 = handleTest ./warzone2100.nix {}; warzone2100 = handleTest ./warzone2100.nix {};
wasabibackend = handleTest ./wasabibackend.nix {}; wasabibackend = handleTest ./wasabibackend.nix {};
wastebin = handleTest ./wastebin.nix {}; wastebin = handleTest ./wastebin.nix {};

40
nixos/tests/wakapi.nix Normal file
View File

@ -0,0 +1,40 @@
import ./make-test-python.nix (
{ lib, ... }:
{
name = "Wakapi";
nodes.machine = {
services.wakapi = {
enable = true;
settings = {
server.port = 3000; # upstream default, set explicitly in case upstream changes it
db = {
dialect = "postgres"; # `createLocally` only supports postgres
host = "/run/postgresql";
port = 5432; # service will fail if port is not set
name = "wakapi";
user = "wakapi";
};
};
database.createLocally = true;
# Created with `cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w ${1:-32} | head -n 1`
# Prefer passwordSaltFile in production.
passwordSalt = "NpqCY7eY7fMoIWYmPx5mAgr6YoSlXSuI";
};
};
# Test that the service is running and that it is reachable.
# This is not very comprehensive for a test, but it should
# catch very basic mistakes in the module.
testScript = ''
machine.wait_for_unit("wakapi.service")
machine.wait_for_open_port(3000)
machine.succeed("curl --fail http://localhost:3000")
'';
meta.maintainers = [ lib.maintainers.NotAShelf ];
}
)