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