at master 3.7 kB view raw
1{ pkgs, ... }: 2 3{ 4 name = "invoiceplane"; 5 meta = with pkgs.lib.maintainers; { 6 maintainers = [ 7 onny 8 ]; 9 }; 10 11 nodes = { 12 invoiceplane_caddy = 13 { ... }: 14 { 15 services.invoiceplane.webserver = "caddy"; 16 services.invoiceplane.sites = { 17 "site1.local" = { 18 database.name = "invoiceplane1"; 19 database.createLocally = true; 20 enable = true; 21 }; 22 "site2.local" = { 23 database.name = "invoiceplane2"; 24 database.createLocally = true; 25 enable = true; 26 }; 27 }; 28 29 networking.firewall.allowedTCPPorts = [ 80 ]; 30 networking.hosts."127.0.0.1" = [ 31 "site1.local" 32 "site2.local" 33 ]; 34 }; 35 36 invoiceplane_nginx = 37 { ... }: 38 { 39 services.invoiceplane.webserver = "nginx"; 40 services.invoiceplane.sites = { 41 "site1.local" = { 42 database.name = "invoiceplane1"; 43 database.createLocally = true; 44 enable = true; 45 }; 46 "site2.local" = { 47 database.name = "invoiceplane2"; 48 database.createLocally = true; 49 enable = true; 50 }; 51 }; 52 53 networking.firewall.allowedTCPPorts = [ 80 ]; 54 networking.hosts."127.0.0.1" = [ 55 "site1.local" 56 "site2.local" 57 ]; 58 }; 59 }; 60 61 testScript = '' 62 start_all() 63 64 invoiceplane_caddy.wait_for_unit("caddy") 65 invoiceplane_nginx.wait_for_unit("nginx") 66 67 site_names = ["site1.local", "site2.local"] 68 69 machines = [invoiceplane_caddy, invoiceplane_nginx] 70 71 for machine in machines: 72 machine.wait_for_open_port(80) 73 machine.wait_for_open_port(3306) 74 75 for site_name in site_names: 76 machine.wait_for_unit(f"phpfpm-invoiceplane-{site_name}") 77 78 with subtest("Website returns welcome screen"): 79 assert "Please install InvoicePlane" in machine.succeed(f"curl -L {site_name}") 80 81 with subtest("Finish InvoicePlane setup"): 82 machine.succeed( 83 f"curl -sSfL --cookie-jar cjar {site_name}/setup/language" 84 ) 85 csrf_token = machine.succeed( 86 "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'" 87 ) 88 machine.succeed( 89 f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&ip_lang=english&btn_continue=Continue' {site_name}/setup/language" 90 ) 91 csrf_token = machine.succeed( 92 "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'" 93 ) 94 machine.succeed( 95 f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/prerequisites" 96 ) 97 csrf_token = machine.succeed( 98 "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'" 99 ) 100 machine.succeed( 101 f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/configure_database" 102 ) 103 csrf_token = machine.succeed( 104 "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'" 105 ) 106 machine.succeed( 107 f"curl -sSfl --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/install_tables" 108 ) 109 csrf_token = machine.succeed( 110 "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'" 111 ) 112 machine.succeed( 113 f"curl -sSfl --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/upgrade_tables" 114 ) 115 ''; 116}