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 = { nodes, ... }: ''
64 start_all()
65 machine.wait_for_unit("phpfpm-mediawiki.service")
66 env = (
67 "SCRIPT_NAME=/index.php",
68 "SCRIPT_FILENAME=${nodes.machine.services.mediawiki.finalPackage}/share/mediawiki/index.php",
69 "REMOTE_ADDR=127.0.0.1",
70 'QUERY_STRING=title=Main_Page',
71 "REQUEST_METHOD=GET",
72 );
73 page = machine.succeed(f"{' '.join(env)} ${pkgs.fcgi}/bin/cgi-fcgi -bind -connect ${nodes.machine.services.phpfpm.pools.mediawiki.socket}")
74 assert "MediaWiki has been installed" in page, f"no 'MediaWiki has been installed' in:\n{page}"
75 '';
76 };
77}