summary refs log tree commit diff
path: root/nixos/tests/freshrss-pgsql.nix
diff options
context:
space:
mode:
authorFelix Buehler <account@buehler.rocks>2023-01-06 01:25:34 +0100
committerFelix Buehler <account@buehler.rocks>2023-01-06 21:16:50 +0100
commit0e2787884e7d6c60e51da9e1c158e75406cac7a9 (patch)
tree4aa4249b48b51f4b4799bacc28f57e2216a3895c /nixos/tests/freshrss-pgsql.nix
parent1a6f1bfe581596614a5ebe58945a2512266c973c (diff)
nixos/freshrss: fix permissions and add database test
Diffstat (limited to 'nixos/tests/freshrss-pgsql.nix')
-rw-r--r--nixos/tests/freshrss-pgsql.nix48
1 files changed, 48 insertions, 0 deletions
diff --git a/nixos/tests/freshrss-pgsql.nix b/nixos/tests/freshrss-pgsql.nix
new file mode 100644
index 0000000000000..055bd51ed43d7
--- /dev/null
+++ b/nixos/tests/freshrss-pgsql.nix
@@ -0,0 +1,48 @@
+import ./make-test-python.nix ({ lib, pkgs, ... }: {
+  name = "freshrss";
+  meta.maintainers = with lib.maintainers; [ etu stunkymonkey ];
+
+  nodes.machine = { pkgs, ... }: {
+    services.freshrss = {
+      enable = true;
+      baseUrl = "http://localhost";
+      passwordFile = pkgs.writeText "password" "secret";
+      dataDir = "/srv/freshrss";
+      database = {
+        type = "pgsql";
+        port = 5432;
+        user = "freshrss";
+        passFile = pkgs.writeText "db-password" "db-secret";
+      };
+    };
+
+    services.postgresql = {
+      enable = true;
+      ensureDatabases = [ "freshrss" ];
+      ensureUsers = [
+        {
+          name = "freshrss";
+          ensurePermissions = {
+            "DATABASE freshrss" = "ALL PRIVILEGES";
+          };
+        }
+      ];
+      initialScript = pkgs.writeText "postgresql-password" ''
+        CREATE ROLE freshrss WITH LOGIN PASSWORD 'db-secret' CREATEDB;
+      '';
+    };
+
+    systemd.services."freshrss-config" = {
+      requires = [ "postgresql.service" ];
+      after = [ "postgresql.service" ];
+    };
+  };
+
+  testScript = ''
+    machine.wait_for_unit("multi-user.target")
+    machine.wait_for_open_port(5432)
+    machine.wait_for_open_port(80)
+    response = machine.succeed("curl -vvv -s -H 'Host: freshrss' http://127.0.0.1:80/i/")
+    assert '<title>Login ยท FreshRSS</title>' in response, "Login page didn't load successfully"
+  '';
+})