nixos/vikunja: add nixos test

Changed files
+72 -2
nixos
pkgs
servers
web-apps
+1
nixos/tests/all-tests.nix
···
vaultwarden = handleTest ./vaultwarden.nix {};
vector = handleTest ./vector.nix {};
victoriametrics = handleTest ./victoriametrics.nix {};
+
vikunja = handleTest ./vikunja.nix {};
virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {};
vscodium = handleTest ./vscodium.nix {};
wasabibackend = handleTest ./wasabibackend.nix {};
+65
nixos/tests/vikunja.nix
···
+
import ./make-test-python.nix ({ pkgs, lib, ... }: {
+
name = "vikunja";
+
+
meta = with lib.maintainers; {
+
maintainers = [ em0lar ];
+
};
+
+
nodes = {
+
vikunjaSqlite = { ... }: {
+
services.vikunja = {
+
enable = true;
+
database = {
+
type = "sqlite";
+
};
+
frontendScheme = "http";
+
frontendHostname = "localhost";
+
};
+
services.nginx.enable = true;
+
};
+
vikunjaPostgresql = { pkgs, ... }: {
+
services.vikunja = {
+
enable = true;
+
database = {
+
type = "postgres";
+
user = "vikunja-api";
+
database = "vikunja-api";
+
host = "/run/postgresql";
+
};
+
frontendScheme = "http";
+
frontendHostname = "localhost";
+
};
+
services.postgresql = {
+
enable = true;
+
ensureDatabases = [ "vikunja-api" ];
+
ensureUsers = [
+
{ name = "vikunja-api";
+
ensurePermissions = { "DATABASE \"vikunja-api\"" = "ALL PRIVILEGES"; };
+
}
+
];
+
};
+
services.nginx.enable = true;
+
};
+
};
+
+
testScript =
+
''
+
vikunjaSqlite.wait_for_unit("vikunja-api.service")
+
vikunjaSqlite.wait_for_open_port(3456)
+
vikunjaSqlite.succeed("curl --fail http://localhost:3456/api/v1/info")
+
+
vikunjaSqlite.wait_for_unit("nginx.service")
+
vikunjaSqlite.wait_for_open_port(80)
+
vikunjaSqlite.succeed("curl --fail http://localhost/api/v1/info")
+
vikunjaSqlite.succeed("curl --fail http://localhost")
+
+
vikunjaPostgresql.wait_for_unit("vikunja-api.service")
+
vikunjaPostgresql.wait_for_open_port(3456)
+
vikunjaPostgresql.succeed("curl --fail http://localhost:3456/api/v1/info")
+
+
vikunjaPostgresql.wait_for_unit("nginx.service")
+
vikunjaPostgresql.wait_for_open_port(80)
+
vikunjaPostgresql.succeed("curl --fail http://localhost/api/v1/info")
+
vikunjaPostgresql.succeed("curl --fail http://localhost")
+
'';
+
})
+3 -1
pkgs/servers/web-apps/vikunja/api.nix
···
-
{ lib, buildGoModule, fetchFromGitea, mage, writeShellScriptBin }:
+
{ lib, buildGoModule, fetchFromGitea, mage, writeShellScriptBin, nixosTests }:
buildGoModule rec {
pname = "vikunja-api";
···
install -Dt $out/bin vikunja
runHook postInstall
'';
+
+
passthru.tests.vikunja = nixosTests.vikunja;
meta = {
description = "API of the Vikunja to-do list app";
+3 -1
pkgs/servers/web-apps/vikunja/frontend.nix
···
-
{ stdenv, lib, fetchurl, unzip, ... }:
+
{ stdenv, lib, fetchurl, unzip, nixosTests, ... }:
stdenv.mkDerivation rec {
pname = "vikunja-frontend";
···
runHook postInstall
'';
+
+
passthru.tests.vikunja = nixosTests.vikunja;
meta = {
description = "Frontend of the Vikunja to-do list app";