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