at master 3.4 kB view raw
1{ lib, config, ... }: 2 3rec { 4 name = "wordpress"; 5 meta = with lib.maintainers; { 6 maintainers = [ 7 flokli 8 grahamc # under duress! 9 mmilata 10 ]; 11 }; 12 13 nodes = 14 lib.foldl 15 ( 16 a: version: 17 let 18 package = config.node.pkgs."wordpress_${version}"; 19 in 20 a 21 // { 22 "wp${version}_httpd" = _: { 23 services.httpd.adminAddr = "webmaster@site.local"; 24 services.httpd.logPerVirtualHost = true; 25 26 services.wordpress.webserver = "httpd"; 27 services.wordpress.sites = { 28 "site1.local" = { 29 database.tablePrefix = "site1_"; 30 inherit package; 31 }; 32 "site2.local" = { 33 database.tablePrefix = "site2_"; 34 inherit package; 35 }; 36 }; 37 38 networking.firewall.allowedTCPPorts = [ 80 ]; 39 networking.hosts."127.0.0.1" = [ 40 "site1.local" 41 "site2.local" 42 ]; 43 }; 44 45 "wp${version}_nginx" = _: { 46 services.wordpress.webserver = "nginx"; 47 services.wordpress.sites = { 48 "site1.local" = { 49 database.tablePrefix = "site1_"; 50 inherit package; 51 }; 52 "site2.local" = { 53 database.tablePrefix = "site2_"; 54 inherit package; 55 }; 56 }; 57 58 networking.firewall.allowedTCPPorts = [ 80 ]; 59 networking.hosts."127.0.0.1" = [ 60 "site1.local" 61 "site2.local" 62 ]; 63 }; 64 65 "wp${version}_caddy" = _: { 66 services.wordpress.webserver = "caddy"; 67 services.wordpress.sites = { 68 "site1.local" = { 69 database.tablePrefix = "site1_"; 70 inherit package; 71 }; 72 "site2.local" = { 73 database.tablePrefix = "site2_"; 74 inherit package; 75 }; 76 }; 77 78 networking.firewall.allowedTCPPorts = [ 79 80 80 443 81 ]; 82 networking.hosts."127.0.0.1" = [ 83 "site1.local" 84 "site2.local" 85 ]; 86 }; 87 } 88 ) 89 { } 90 [ 91 "6_7" 92 "6_8" 93 ]; 94 95 testScript = '' 96 import re 97 98 start_all() 99 100 ${lib.concatStrings ( 101 lib.mapAttrsToList (name: value: '' 102 ${name}.wait_for_unit("${(value null).services.wordpress.webserver}") 103 '') nodes 104 )} 105 106 site_names = ["site1.local", "site2.local"] 107 108 for machine in (${lib.concatStringsSep ", " (builtins.attrNames nodes)}): 109 for site_name in site_names: 110 machine.wait_for_unit(f"phpfpm-wordpress-{site_name}") 111 112 with subtest("website returns welcome screen"): 113 assert "Welcome to the famous" in machine.succeed(f"curl -k -L {site_name}") 114 115 with subtest("wordpress-init went through"): 116 info = machine.get_unit_info(f"wordpress-init-{site_name}") 117 assert info["Result"] == "success" 118 119 with subtest("secret keys are set"): 120 pattern = re.compile(r"^define.*NONCE_SALT.{64,};$", re.MULTILINE) 121 assert pattern.search( 122 machine.succeed(f"cat /var/lib/wordpress/{site_name}/secret-keys.php") 123 ) 124 ''; 125}