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