Unverified Commit da9185d9 authored by Moritz 'e1mo' Fromm's avatar Moritz 'e1mo' Fromm
Browse files

nixosTests.dokuwiki: Deduplicate node configuration

Also added two "quality of life" tests to ensure customisations to the
dokuiwki package are not being discarded and both webserver
configurations handle rewriting correctly.
parent 0dcf2ad9
Loading
Loading
Loading
Loading
+51 −43
Original line number Diff line number Diff line
@@ -30,24 +30,27 @@ let
    installPhase = "mkdir -p $out; cp -R * $out/";
  };

in {
  name = "dokuwiki";
  meta = with pkgs.lib; {
    maintainers = with maintainers; [
      _1000101
      onny
    ];
  };
  acronymsFile = pkgs.writeText "acronyms.local.conf" ''
    r13y  reproducibility
  '';

  nodes = {
    dokuwiki_nginx = {...}: {
  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 ];
@@ -60,27 +63,18 @@ in {
    networking.hosts."127.0.0.1" = [ "site1.local" "site2.local" ];
  };

    dokuwiki_caddy = {...}: {
      services.dokuwiki = {
        webserver = "caddy";
        sites = {
          "site1.local" = {
            aclUse = false;
            superUser = "admin";
          };
          "site2.local" = {
            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 = ''
@@ -102,10 +96,24 @@ in {
        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!'",
          )
  '';
})