python312Packages.dissect-extfs: 3.11 -> 3.12
[NixPkgs.git] / nixos / tests / pgbouncer.nix
blob8d11c4b3f4bf557e1ca2189ec0c9d46c3eae6852
1 import ./make-test-python.nix ({ lib, pkgs, ... }: {
2   name = "pgbouncer";
4   meta = with lib.maintainers; {
5     maintainers = [ _1000101 ];
6   };
8   nodes = {
9     one = { pkgs, ... }: {
10       systemd.services.postgresql = {
11         postStart = ''
12           ${pkgs.postgresql}/bin/psql -U postgres -c "ALTER ROLE testuser WITH LOGIN PASSWORD 'testpass'";
13           ${pkgs.postgresql}/bin/psql -U postgres -c "ALTER DATABASE testdb OWNER TO testuser;";
14         '';
15       };
17       services = {
18         postgresql = {
19           enable = true;
20           ensureDatabases = [ "testdb" ];
21           ensureUsers = [{ name = "testuser"; }];
22           authentication = ''
23             local testdb testuser scram-sha-256
24           '';
25         };
27         pgbouncer = {
28           enable = true;
29           openFirewall = true;
30           settings = {
31             pgbouncer = {
32               listen_addr = "localhost";
33               auth_type = "scram-sha-256";
34               auth_file = builtins.toFile "pgbouncer-users.txt" ''
35                 "testuser" "testpass"
36               '';
37             };
38             databases = {
39               test = "host=/run/postgresql port=5432 auth_user=testuser dbname=testdb";
40             };
41           };
42         };
43       };
44     };
45   };
47   testScript = ''
48     start_all()
49     one.wait_for_unit("default.target")
50     one.require_unit_state("pgbouncer.service", "active")
52     # Test if we can make a query through PgBouncer
53     one.wait_until_succeeds(
54         "psql 'postgres://testuser:testpass@localhost:6432/test' -c 'SELECT 1;'"
55     )
56   '';