1{ pkgs, ... }:
2let
3 role = "test";
4 password = "secret";
5 conn = "local";
6in
7{
8 name = "pgmanage";
9 meta = with pkgs.lib.maintainers; {
10 maintainers = [ basvandijk ];
11 };
12 nodes = {
13 one =
14 { config, pkgs, ... }:
15 {
16 services = {
17 postgresql = {
18 enable = true;
19 initialScript = pkgs.writeText "pg-init-script" ''
20 CREATE ROLE ${role} SUPERUSER LOGIN PASSWORD '${password}';
21 '';
22 };
23 pgmanage = {
24 enable = true;
25 connections = {
26 ${conn} =
27 "hostaddr=127.0.0.1 port=${toString config.services.postgresql.settings.port} dbname=postgres";
28 };
29 };
30 };
31 };
32 };
33
34 testScript = ''
35 start_all()
36 one.wait_for_unit("default.target")
37 one.require_unit_state("pgmanage.service", "active")
38
39 # Test if we can log in.
40 one.wait_until_succeeds(
41 "curl 'http://localhost:8080/pgmanage/auth' --data 'action=login&connname=${conn}&username=${role}&password=${password}' --fail"
42 )
43 '';
44}