1{
2 system ? builtins.currentSystem,
3 config ? { },
4 pkgs ? import ../.. { inherit system config; },
5}:
6
7let
8 shared = {
9 services.mediawiki.enable = true;
10 services.mediawiki.httpd.virtualHost.hostName = "localhost";
11 services.mediawiki.httpd.virtualHost.adminAddr = "root@example.com";
12 services.mediawiki.passwordFile = pkgs.writeText "password" "correcthorsebatterystaple";
13 services.mediawiki.extensions = {
14 Matomo = pkgs.fetchzip {
15 url = "https://github.com/DaSchTour/matomo-mediawiki-extension/archive/v4.0.1.tar.gz";
16 sha256 = "0g5rd3zp0avwlmqagc59cg9bbkn3r7wx7p6yr80s644mj6dlvs1b";
17 };
18 ParserFunctions = null;
19 };
20 };
21
22 testLib = import ../lib/testing-python.nix {
23 inherit system pkgs;
24 extraConfigurations = [ shared ];
25 };
26in
27{
28 mysql = testLib.makeTest {
29 name = "mediawiki-mysql";
30 nodes.machine = {
31 services.mediawiki.database.type = "mysql";
32 };
33 testScript = ''
34 start_all()
35
36 machine.wait_for_unit("phpfpm-mediawiki.service")
37
38 page = machine.succeed("curl -fL http://localhost/")
39 assert "MediaWiki has been installed" in page
40 '';
41 };
42
43 postgresql = testLib.makeTest {
44 name = "mediawiki-postgres";
45 nodes.machine = {
46 services.mediawiki.database.type = "postgres";
47 };
48 testScript = ''
49 start_all()
50
51 machine.wait_for_unit("phpfpm-mediawiki.service")
52
53 page = machine.succeed("curl -fL http://localhost/")
54 assert "MediaWiki has been installed" in page
55 '';
56 };
57
58 nohttpd = testLib.makeTest {
59 name = "mediawiki-nohttpd";
60 nodes.machine = {
61 services.mediawiki.webserver = "none";
62 };
63 testScript =
64 { nodes, ... }:
65 ''
66 start_all()
67 machine.wait_for_unit("phpfpm-mediawiki.service")
68 env = (
69 "SCRIPT_NAME=/index.php",
70 "SCRIPT_FILENAME=${nodes.machine.services.mediawiki.finalPackage}/share/mediawiki/index.php",
71 "REMOTE_ADDR=127.0.0.1",
72 'QUERY_STRING=title=Main_Page',
73 "REQUEST_METHOD=GET",
74 );
75 page = machine.succeed(f"{' '.join(env)} ${pkgs.fcgi}/bin/cgi-fcgi -bind -connect ${nodes.machine.services.phpfpm.pools.mediawiki.socket}")
76 assert "MediaWiki has been installed" in page, f"no 'MediaWiki has been installed' in:\n{page}"
77 '';
78 };
79
80 nginx = testLib.makeTest {
81 name = "mediawiki-nginx";
82 nodes.machine = {
83 services.mediawiki.webserver = "nginx";
84 };
85 testScript = ''
86 start_all()
87
88 machine.wait_for_unit("phpfpm-mediawiki.service")
89 machine.wait_for_unit("nginx.service")
90
91 page = machine.succeed("curl -fL http://localhost/")
92 assert "MediaWiki has been installed" in page
93 '';
94 };
95}