1{ pkgs, lib, ... }:
2{
3 name = "engelsystem";
4 meta = with pkgs.lib.maintainers; {
5 maintainers = [ talyz ];
6 };
7
8 nodes.engelsystem =
9 { ... }:
10 {
11 services.engelsystem = {
12 enable = true;
13 domain = "engelsystem";
14 createDatabase = true;
15 };
16 networking.firewall.allowedTCPPorts = [
17 80
18 443
19 ];
20 environment.systemPackages = with pkgs; [
21 xmlstarlet
22 libxml2
23 ];
24 };
25
26 testScript = ''
27 engelsystem.start()
28 engelsystem.wait_for_unit("phpfpm-engelsystem.service")
29 engelsystem.wait_until_succeeds("curl engelsystem/login -sS -f")
30 engelsystem.succeed(
31 "curl engelsystem/login -sS -f -c cookie | xmllint -html -xmlout - >login"
32 )
33 engelsystem.succeed(
34 "xml sel -T -t -m \"html/head/meta[@name='csrf-token']\" -v @content login >token"
35 )
36 engelsystem.succeed(
37 "curl engelsystem/login -sS -f -b cookie -F 'login=admin' -F 'password=asdfasdf' -F '_token=<token' -L | xmllint -html -xmlout - >news"
38 )
39 engelsystem.succeed(
40 "test 'News - Engelsystem' = \"$(xml sel -T -t -c html/head/title news)\""
41 )
42 '';
43}