nixpkgs/nixos/tests/dokuwiki.nix
Moritz 'e1mo' Fromm 055100611d
nixos/dokuwiki: Simplify plugin fetching examples
Also replaced apache httpd referenced with ones to caddy
2023-01-06 15:12:47 +01:00

115 lines
3.7 KiB
Nix

import ./make-test-python.nix ({ pkgs, ... }:
let
template-bootstrap3 = pkgs.stdenv.mkDerivation rec {
name = "bootstrap3";
version = "2022-07-27";
src = pkgs.fetchFromGitHub {
owner = "giterlizzi";
repo = "dokuwiki-template-bootstrap3";
rev = "v${version}";
hash = "sha256-B3Yd4lxdwqfCnfmZdp+i/Mzwn/aEuZ0ovagDxuR6lxo=";
};
installPhase = "mkdir -p $out; cp -R * $out/";
};
plugin-icalevents = pkgs.stdenv.mkDerivation rec {
name = "icalevents";
version = "2017-06-16";
src = pkgs.fetchzip {
stripRoot = false;
url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/${version}/dokuwiki-plugin-icalevents-${version}.zip";
hash = "sha256-IPs4+qgEfe8AAWevbcCM9PnyI0uoyamtWeg4rEb+9Wc=";
};
installPhase = "mkdir -p $out; cp -R * $out/";
};
acronymsFile = pkgs.writeText "acronyms.local.conf" ''
r13y reproducibility
'';
dwWithAcronyms = pkgs.dokuwiki.overrideAttrs (prev: {
installPhase = prev.installPhase or "" + ''
ln -sf ${acronymsFile} $out/share/dokuwiki/conf/acronyms.local.conf
'';
});
mkNode = webserver: { ... }: {
services.dokuwiki = {
inherit webserver;
sites = {
"site1.local" = {
aclUse = false;
superUser = "admin";
};
"site2.local" = {
package = dwWithAcronyms;
usersFile = "/var/lib/dokuwiki/site2.local/users.auth.php";
superUser = "admin";
templates = [ template-bootstrap3 ];
plugins = [ plugin-icalevents ];
};
};
};
networking.firewall.allowedTCPPorts = [ 80 ];
networking.hosts."127.0.0.1" = [ "site1.local" "site2.local" ];
};
in {
name = "dokuwiki";
meta = with pkgs.lib; {
maintainers = with maintainers; [
_1000101
onny
];
};
nodes = {
dokuwiki_nginx = mkNode "nginx";
dokuwiki_caddy = mkNode "caddy";
};
testScript = ''
start_all()
dokuwiki_nginx.wait_for_unit("nginx")
dokuwiki_caddy.wait_for_unit("caddy")
site_names = ["site1.local", "site2.local"]
for machine in (dokuwiki_nginx, dokuwiki_caddy):
for site_name in site_names:
machine.wait_for_unit(f"phpfpm-dokuwiki-{site_name}")
machine.succeed("curl -sSfL http://site1.local/ | grep 'DokuWiki'")
machine.fail("curl -sSfL 'http://site1.local/doku.php?do=login' | grep 'Login'")
machine.succeed("curl -sSfL http://site2.local/ | grep 'DokuWiki'")
machine.succeed("curl -sSfL 'http://site2.local/doku.php?do=login' | grep 'Login'")
with subtest("ACL Operations"):
machine.succeed(
"echo 'admin:$2y$10$ijdBQMzSVV20SrKtCna8gue36vnsbVm2wItAXvdm876sshI4uwy6S:Admin:admin@example.test:user' >> /var/lib/dokuwiki/site2.local/users.auth.php",
"curl -sSfL -d 'u=admin&p=password' --cookie-jar cjar 'http://site2.local/doku.php?do=login'",
"curl -sSfL --cookie cjar --cookie-jar cjar 'http://site2.local/doku.php?do=login' | grep 'Logged in as: <bdi>Admin</bdi>'",
)
with subtest("Customizing Dokuwiki"):
machine.succeed(
"echo 'r13y is awesome!' >> /var/lib/dokuwiki/site2.local/data/pages/acronyms-test.txt",
"curl -sSfL 'http://site2.local/doku.php?id=acronyms-test' | grep '<abbr title=\"reproducibility\">r13y</abbr>'",
)
# Just to ensure both Webserver configurations are consistent in allowing that
with subtest("Rewriting"):
machine.succeed(
"echo 'Hello, NixOS!' >> /var/lib/dokuwiki/site1.local/data/pages/rewrite-test.txt",
"curl -sSfL http://site1.local/rewrite-test | grep 'Hello, NixOS!'",
)
'';
})