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