vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / mediawiki.nix
blobe30cc55ff61602722b27ab08592375c72306f52e
2   system ? builtins.currentSystem,
3   config ? {},
4   pkgs ? import ../.. { inherit system config; },
5 }:
7 let
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   };
22   testLib = import ../lib/testing-python.nix {
23     inherit system pkgs;
24     extraConfigurations = [ shared ];
25   };
28   mysql = testLib.makeTest {
29     name = "mediawiki-mysql";
30     nodes.machine = {
31       services.mediawiki.database.type = "mysql";
32     };
33     testScript = ''
34       start_all()
36       machine.wait_for_unit("phpfpm-mediawiki.service")
38       page = machine.succeed("curl -fL http://localhost/")
39       assert "MediaWiki has been installed" in page
40     '';
41   };
43   postgresql = testLib.makeTest {
44     name = "mediawiki-postgres";
45     nodes.machine = {
46       services.mediawiki.database.type = "postgres";
47     };
48     testScript = ''
49       start_all()
51       machine.wait_for_unit("phpfpm-mediawiki.service")
53       page = machine.succeed("curl -fL http://localhost/")
54       assert "MediaWiki has been installed" in page
55     '';
56   };
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   };
78   nginx = testLib.makeTest {
79     name = "mediawiki-nginx";
80     nodes.machine = {
81       services.mediawiki.webserver = "nginx";
82     };
83     testScript = ''
84       start_all()
86       machine.wait_for_unit("phpfpm-mediawiki.service")
87       machine.wait_for_unit("nginx.service")
89       page = machine.succeed("curl -fL http://localhost/")
90       assert "MediaWiki has been installed" in page
91     '';
92   };