From b7d2e507e0762b21b5128c6adb08071124efe6b8 Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sat, 29 Mar 2025 16:14:24 +0100 Subject: [PATCH] nixosTests.wordpress: migrate to runTest Part of #386873 --- nixos/tests/all-tests.nix | 2 +- nixos/tests/wordpress.nix | 224 +++++++++++++++++++------------------- 2 files changed, 112 insertions(+), 114 deletions(-) diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index ede3e3fc3a0e..9f4e15e0d2fa 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1314,7 +1314,7 @@ in { wmderland = handleTest ./wmderland.nix {}; workout-tracker = handleTest ./workout-tracker.nix {}; wpa_supplicant = import ./wpa_supplicant.nix { inherit pkgs runTest; }; - wordpress = handleTest ./wordpress.nix {}; + wordpress = runTest ./wordpress.nix; wrappers = handleTest ./wrappers.nix {}; writefreely = handleTest ./web-apps/writefreely.nix {}; wstunnel = runTest ./wstunnel.nix; diff --git a/nixos/tests/wordpress.nix b/nixos/tests/wordpress.nix index 4961a6027565..c7988c111ac4 100644 --- a/nixos/tests/wordpress.nix +++ b/nixos/tests/wordpress.nix @@ -1,123 +1,121 @@ -import ./make-test-python.nix ( - { lib, pkgs, ... }: +{ lib, config, ... }: - rec { - name = "wordpress"; - meta = with pkgs.lib.maintainers; { - maintainers = [ - flokli - grahamc # under duress! - mmilata +rec { + name = "wordpress"; + meta = with lib.maintainers; { + maintainers = [ + flokli + grahamc # under duress! + mmilata + ]; + }; + + nodes = + lib.foldl + ( + a: version: + let + package = config.node.pkgs."wordpress_${version}"; + in + a + // { + "wp${version}_httpd" = _: { + services.httpd.adminAddr = "webmaster@site.local"; + services.httpd.logPerVirtualHost = true; + + services.wordpress.webserver = "httpd"; + services.wordpress.sites = { + "site1.local" = { + database.tablePrefix = "site1_"; + inherit package; + }; + "site2.local" = { + database.tablePrefix = "site2_"; + inherit package; + }; + }; + + networking.firewall.allowedTCPPorts = [ 80 ]; + networking.hosts."127.0.0.1" = [ + "site1.local" + "site2.local" + ]; + }; + + "wp${version}_nginx" = _: { + services.wordpress.webserver = "nginx"; + services.wordpress.sites = { + "site1.local" = { + database.tablePrefix = "site1_"; + inherit package; + }; + "site2.local" = { + database.tablePrefix = "site2_"; + inherit package; + }; + }; + + networking.firewall.allowedTCPPorts = [ 80 ]; + networking.hosts."127.0.0.1" = [ + "site1.local" + "site2.local" + ]; + }; + + "wp${version}_caddy" = _: { + services.wordpress.webserver = "caddy"; + services.wordpress.sites = { + "site1.local" = { + database.tablePrefix = "site1_"; + inherit package; + }; + "site2.local" = { + database.tablePrefix = "site2_"; + inherit package; + }; + }; + + networking.firewall.allowedTCPPorts = [ 80 ]; + networking.hosts."127.0.0.1" = [ + "site1.local" + "site2.local" + ]; + }; + } + ) + { } + [ + "6_7" ]; - }; - nodes = - lib.foldl - ( - a: version: - let - package = pkgs."wordpress_${version}"; - in - a - // { - "wp${version}_httpd" = _: { - services.httpd.adminAddr = "webmaster@site.local"; - services.httpd.logPerVirtualHost = true; + testScript = '' + import re - services.wordpress.webserver = "httpd"; - services.wordpress.sites = { - "site1.local" = { - database.tablePrefix = "site1_"; - inherit package; - }; - "site2.local" = { - database.tablePrefix = "site2_"; - inherit package; - }; - }; + start_all() - networking.firewall.allowedTCPPorts = [ 80 ]; - networking.hosts."127.0.0.1" = [ - "site1.local" - "site2.local" - ]; - }; + ${lib.concatStrings ( + lib.mapAttrsToList (name: value: '' + ${name}.wait_for_unit("${(value null).services.wordpress.webserver}") + '') nodes + )} - "wp${version}_nginx" = _: { - services.wordpress.webserver = "nginx"; - services.wordpress.sites = { - "site1.local" = { - database.tablePrefix = "site1_"; - inherit package; - }; - "site2.local" = { - database.tablePrefix = "site2_"; - inherit package; - }; - }; + site_names = ["site1.local", "site2.local"] - networking.firewall.allowedTCPPorts = [ 80 ]; - networking.hosts."127.0.0.1" = [ - "site1.local" - "site2.local" - ]; - }; + for machine in (${lib.concatStringsSep ", " (builtins.attrNames nodes)}): + for site_name in site_names: + machine.wait_for_unit(f"phpfpm-wordpress-{site_name}") - "wp${version}_caddy" = _: { - services.wordpress.webserver = "caddy"; - services.wordpress.sites = { - "site1.local" = { - database.tablePrefix = "site1_"; - inherit package; - }; - "site2.local" = { - database.tablePrefix = "site2_"; - inherit package; - }; - }; + with subtest("website returns welcome screen"): + assert "Welcome to the famous" in machine.succeed(f"curl -L {site_name}") - networking.firewall.allowedTCPPorts = [ 80 ]; - networking.hosts."127.0.0.1" = [ - "site1.local" - "site2.local" - ]; - }; - } - ) - { } - [ - "6_7" - ]; + with subtest("wordpress-init went through"): + info = machine.get_unit_info(f"wordpress-init-{site_name}") + assert info["Result"] == "success" - testScript = '' - import re - - start_all() - - ${lib.concatStrings ( - lib.mapAttrsToList (name: value: '' - ${name}.wait_for_unit("${(value null).services.wordpress.webserver}") - '') nodes - )} - - site_names = ["site1.local", "site2.local"] - - for machine in (${lib.concatStringsSep ", " (builtins.attrNames nodes)}): - for site_name in site_names: - machine.wait_for_unit(f"phpfpm-wordpress-{site_name}") - - with subtest("website returns welcome screen"): - assert "Welcome to the famous" in machine.succeed(f"curl -L {site_name}") - - with subtest("wordpress-init went through"): - info = machine.get_unit_info(f"wordpress-init-{site_name}") - assert info["Result"] == "success" - - with subtest("secret keys are set"): - pattern = re.compile(r"^define.*NONCE_SALT.{64,};$", re.MULTILINE) - assert pattern.search( - machine.succeed(f"cat /var/lib/wordpress/{site_name}/secret-keys.php") - ) - ''; - } -) + with subtest("secret keys are set"): + pattern = re.compile(r"^define.*NONCE_SALT.{64,};$", re.MULTILINE) + assert pattern.search( + machine.succeed(f"cat /var/lib/wordpress/{site_name}/secret-keys.php") + ) + ''; +}