1{ pkgs, lib, ... }:
2{
3 name = "documize";
4 meta = with pkgs.lib.maintainers; {
5 maintainers = [ ];
6 };
7
8 nodes.machine =
9 { pkgs, ... }:
10 {
11 environment.systemPackages = [ pkgs.jq ];
12
13 services.documize = {
14 enable = true;
15 port = 3000;
16 dbtype = "postgresql";
17 db = "host=localhost port=5432 sslmode=disable user=documize password=documize dbname=documize";
18 };
19
20 systemd.services.documize-server = {
21 after = [ "postgresql.target" ];
22 requires = [ "postgresql.target" ];
23 };
24
25 services.postgresql = {
26 enable = true;
27 initialScript = pkgs.writeText "psql-init" ''
28 CREATE ROLE documize WITH LOGIN PASSWORD 'documize';
29 CREATE DATABASE documize WITH OWNER documize;
30 '';
31 };
32 };
33
34 testScript = ''
35 start_all()
36
37 machine.wait_for_unit("documize-server.service")
38 machine.wait_for_open_port(3000)
39
40 dbhash = machine.succeed(
41 "curl -f localhost:3000 | grep 'property=\"dbhash' | grep -Po 'content=\"\\K[^\"]*'"
42 )
43
44 dbhash = dbhash.strip()
45
46 machine.succeed(
47 (
48 "curl -X POST"
49 " --data 'dbname=documize'"
50 " --data 'dbhash={}'"
51 " --data 'title=NixOS'"
52 " --data 'message=Docs'"
53 " --data 'firstname=Bob'"
54 " --data 'lastname=Foobar'"
55 " --data 'email=bob.foobar@nixos.org'"
56 " --data 'password=verysafe'"
57 " -f localhost:3000/api/setup"
58 ).format(dbhash)
59 )
60
61 machine.succeed(
62 'test "$(curl -f localhost:3000/api/public/meta | jq ".title" | xargs echo)" = "NixOS"'
63 )
64 '';
65}