at 25.11-pre 1.9 kB view raw
1{ pkgs, ... }: 2{ 3 name = "davis"; 4 5 meta.maintainers = pkgs.davis.meta.maintainers; 6 7 nodes.machine = 8 { config, ... }: 9 { 10 virtualisation = { 11 memorySize = 512; 12 }; 13 14 services.davis = { 15 enable = true; 16 hostname = "davis.example.com"; 17 database = { 18 driver = "postgresql"; 19 }; 20 mail = { 21 dsnFile = "${pkgs.writeText "davisMailDns" "smtp://username:password@example.com:25"}"; 22 inviteFromAddress = "dav@example.com"; 23 }; 24 adminLogin = "admin"; 25 appSecretFile = "${pkgs.writeText "davisAppSecret" "52882ef142066e09ab99ce816ba72522e789505caba224"}"; 26 adminPasswordFile = "${pkgs.writeText "davisAdminPass" "nixos"}"; 27 nginx = { }; 28 }; 29 }; 30 31 testScript = '' 32 start_all() 33 machine.wait_for_unit("postgresql.service") 34 machine.wait_for_unit("davis-env-setup.service") 35 machine.wait_for_unit("davis-db-migrate.service") 36 machine.wait_for_unit("nginx.service") 37 machine.wait_for_unit("phpfpm-davis.service") 38 39 with subtest("welcome screen loads"): 40 machine.succeed( 41 "curl -sSfL --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/ | grep '<title>Davis</title>'" 42 ) 43 44 with subtest("login works"): 45 csrf_token = machine.succeed( 46 "curl -c /tmp/cookies -sSfL --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/login | grep '_csrf_token' | sed -E 's,.*value=\"(.*)\".*,\\1,g'" 47 ) 48 r = machine.succeed( 49 f"curl -b /tmp/cookies --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/login -X POST -F _username=admin -F _password=nixos -F _csrf_token={csrf_token.strip()} -D headers" 50 ) 51 print(r) 52 machine.succeed( 53 "[[ $(grep -i 'location: ' headers | cut -d: -f2- | xargs echo) == /dashboard* ]]" 54 ) 55 ''; 56}