at master 2.2 kB view raw
1{ lib, ... }: 2let 3 nodes = { 4 5 "drupal_nginx" = _: { 6 services.drupal.webserver = "nginx"; 7 services.drupal.enable = true; 8 services.drupal.sites = { 9 "site1.local" = { 10 database.tablePrefix = "site1_"; 11 enable = true; 12 }; 13 "site2.local" = { 14 database.tablePrefix = "site2_"; 15 enable = true; 16 }; 17 }; 18 19 networking.firewall.allowedTCPPorts = [ 80 ]; 20 networking.hosts."127.0.0.1" = [ 21 "site1.local" 22 "site2.local" 23 ]; 24 }; 25 26 "drupal_caddy" = _: { 27 services.drupal.enable = true; 28 services.drupal.webserver = "caddy"; 29 services.drupal.sites = { 30 "site1.local" = { 31 enable = true; 32 database.tablePrefix = "site1_"; 33 }; 34 "site2.local" = { 35 enable = true; 36 database.tablePrefix = "site2_"; 37 }; 38 }; 39 40 networking.firewall.allowedTCPPorts = [ 41 80 42 443 43 ]; 44 networking.hosts."127.0.0.1" = [ 45 "site1.local" 46 "site2.local" 47 ]; 48 }; 49 }; 50in 51{ 52 name = "drupal"; 53 meta.maintainers = [ 54 lib.maintainers.OulipianSummer 55 ]; 56 57 inherit nodes; 58 59 testScript = '' 60 start_all() 61 62 ${lib.concatStrings ( 63 lib.mapAttrsToList (name: value: '' 64 ${name}.wait_for_unit("${(value null).services.drupal.webserver}") 65 '') nodes 66 )} 67 68 site_names = ["site1.local", "site2.local"] 69 70 for machine in (${lib.concatStringsSep ", " (builtins.attrNames nodes)}): 71 for site_name in site_names: 72 machine.wait_for_unit(f"phpfpm-drupal-{site_name}") 73 74 with subtest("website returns welcome screen"): 75 assert "Choose language" in machine.succeed(f"curl -k -L {site_name}") 76 77 with subtest("website is installable"): 78 assert "Database configuration" in machine.succeed(f"curl -k -L \"{site_name}/core/install.php?langcode=en&profile=standard\"") 79 80 with subtest("drupal-state-init went through"): 81 info = machine.get_unit_info(f"drupal-state-init-{site_name}") 82 assert info["Result"] == "success" 83 ''; 84}