Unverified Commit eae71219 authored by Franz Pletz's avatar Franz Pletz Committed by GitHub
Browse files

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

parents b963eb20 05d349dd
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -182,21 +182,21 @@ in
        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.";
      }
      {
        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.";
      }
      {
        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!";
      }
    ];

    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".

        The Wakapi module only supports for PostgreSQL. Please set `services.wakapi.database.createLocally`
+1 −0
Original line number Diff line number Diff line
@@ -1108,6 +1108,7 @@ in {
  vscode-remote-ssh = handleTestOn ["x86_64-linux"] ./vscode-remote-ssh.nix {};
  vscodium = discoverTests (import ./vscodium.nix);
  vsftpd = handleTest ./vsftpd.nix {};
  wakapi = handleTest ./wakapi.nix {};
  warzone2100 = handleTest ./warzone2100.nix {};
  wasabibackend = handleTest ./wasabibackend.nix {};
  wastebin = handleTest ./wastebin.nix {};

nixos/tests/wakapi.nix

0 → 100644
+40 −0
Original line number Diff line number Diff line
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 ];
  }
)