at master 1.7 kB view raw
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}