summaryrefslogtreecommitdiffstats
path: root/nixos/tests/hedgedoc.nix
blob: b8701d866bdfce64ad141cd9a4442018571b4fcd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
{ pkgs, ... }:
{
  name = "hedgedoc";

  meta.maintainers = [ ];
  containers = {
    sqlite =
      { ... }:
      {
        services.hedgedoc.enable = true;
      };

    pgsqltcp =
      { ... }:
      {
        systemd.services.hedgedoc.after = [ "postgresql.target" ];
        services = {
          hedgedoc = {
            enable = true;
            settings.db = {
              dialect = "postgres";
              user = "hedgedoc";
              password = "$DB_PASSWORD";
              host = "localhost";
              port = 5432;
              database = "hedgedocdb";
            };

            /*
              Do not use pkgs.writeText for secrets as
              they will end up in the world-readable Nix store.
            */
            environmentFile = pkgs.writeText "hedgedoc-env" ''
              DB_PASSWORD=snakeoilpassword
            '';
          };
          postgresql = {
            enable = true;
            initialScript = pkgs.writeText "pg-init-script.sql" ''
              CREATE ROLE hedgedoc LOGIN PASSWORD 'snakeoilpassword';
              CREATE DATABASE hedgedocdb OWNER hedgedoc;
            '';
          };
        };
      };

    pgsqluds =
      { ... }:
      {
        systemd.services.hedgedoc.after = [ "postgresql.target" ];
        services = {
          hedgedoc = {
            enable = true;
            settings.db = {
              dialect = "postgres";
              user = "hedgedoc";
              password = "$DB_PASSWORD";
              host = "/run/postgresql";
              database = "hedgedocdb";
            };

            environmentFile = pkgs.writeText "hedgedoc-env" ''
              DB_PASSWORD=snakeoilpassword
            '';
          };
          postgresql = {
            enable = true;
            initialScript = pkgs.writeText "pg-init-script.sql" ''
              CREATE ROLE hedgedoc LOGIN PASSWORD 'snakeoilpassword';
              CREATE DATABASE hedgedocdb OWNER hedgedoc;
            '';
          };
        };
      };
  };

  testScript = ''
    start_all()

    with subtest("HedgeDoc sqlite"):
        sqlite.wait_for_unit("hedgedoc.service")
        sqlite.wait_for_open_port(3000)
        sqlite.wait_until_succeeds("curl -sSf http://localhost:3000/new")

    with subtest("HedgeDoc postgres with TCP socket"):
        pgsqltcp.wait_for_unit("postgresql.target")
        pgsqltcp.wait_for_unit("hedgedoc.service")
        pgsqltcp.wait_for_open_port(5432)
        pgsqltcp.wait_for_open_port(3000)
        pgsqltcp.wait_until_succeeds("curl -sSf http://localhost:3000/new")

    with subtest("HedgeDoc postgres with UNIX socket"):
        pgsqluds.wait_for_unit("postgresql.target")
        pgsqluds.wait_for_unit("hedgedoc.service")
        pgsqluds.wait_for_open_port(5432)
        pgsqluds.wait_for_open_port(3000)
        pgsqluds.wait_until_succeeds("curl -sSf http://localhost:3000/new")
  '';
}