wiki.techinc.nl/tests/phpunit
Kunal Mehta bdb5b592f4 shell: Optionally restrict commands' access with firejail
Introduces a FirejailCommand class, which can be used to add additional
restrictions to a command, for increased security. For now, firejail
containment needs to be enabled on a per-command basis.

The following restrictions are implemented:
* NO_ROOT - disallows any root access, including via setuid binaries
* SECCOMP - block dangerous syscalls with seccomp
* PRIVATE_DEV - create a private /dev
* NO_NETWORK - deny all network access
* NO_EXECVE - block the execve syscall

A convenient Shell::RESTRICT_DEFAULT is equivalent to NO_ROOT | SECCOMP
| PRIVATE_DEV, with the expectation that more restrictions may be added
to it in the future.

In addition, specific paths can be whitelisted with
Command::whitelistPaths(). Any file/directory that isn't whitelisted in
that top level directory (e.g. /srv) won't exist inside the firejail.

$wgShellRestrictionMethod can be set to false for no restriction system,
'firejail' to explicitly use it, or 'autodetect' to autodetect whatever
system is available. In the future the default should be changed to
autodetection once firejail is tested more.

Bug: T173370
Change-Id: Id74df0dbba40e1e7c07c4368aacffb6eb06a17c5
2017-11-28 00:06:40 +00:00
..
data Merge "Add a few schemas to SQLite tests" 2017-10-17 22:37:32 +00:00
docs
includes shell: Optionally restrict commands' access with firejail 2017-11-28 00:06:40 +00:00
languages Crimean Tatar Transliteration 2017-11-20 16:56:38 -05:00
maintenance Refactor some Installer code into ExecutableFinder 2017-10-26 11:42:05 -07:00
mocks RCFilters: define consistent interface in ChangesListFilterGroup 2017-10-18 12:44:51 -07:00
skins tests: Replace implicit Bugzilla bug numbers with Phab ones 2017-02-21 02:14:34 +00:00
structure Add string length limits 2017-11-21 10:24:11 +00:00
suites Check requirements for parser test suite in phpunit tests 2017-09-14 19:03:02 +00:00
tests phpunit: Avoid use of deprecated getMock for PHPUnit 5 compat 2017-04-06 00:44:32 +00:00
autoload.ide.php Setup: Include StartProfiler before others 2017-11-09 16:35:19 -08:00
bootstrap.php
LessFileCompilationTest.php resourceloader: Tidy up RL to simplify ResourceLoaderEditToolbarModule 2015-09-28 12:18:12 -07:00
Makefile Refactor parser tests 2016-09-12 16:11:42 +10:00
MediaWikiLangTestCase.php phpunit: Abstract user-lang override in MediaWikiTestCase 2016-03-09 16:55:50 +00:00
MediaWikiPHPUnitTestListener.php Wrap some long strings in tests/ 2015-09-26 21:01:59 +01:00
MediaWikiTestCase.php Clarify the use of @group Database in MediaWikiTestCase 2017-11-23 19:19:14 +00:00
phpunit.php phpunit.php: omit --quiet in help 2017-09-17 06:15:38 +00:00
README Update test documentation, fix broken links 2015-09-03 12:28:19 +00:00
ResourceLoaderTestCase.php Improve some parameter docs 2017-09-10 20:32:31 +02:00
run-tests.bat
suite.xml phpunit: Exclude /languages/messages from coverage report 2017-07-27 21:03:18 -07:00
TODO

== MediaWiki PHPUnit Tests ==

The unit tests for MediaWiki are implemented using the PHPUnit testing
framework and require PHPUnit to run.


=== WARNING ===

Some of the unit tests are DESTRUCTIVE and WILL ALTER YOUR WIKI'S CONTENTS.

DO NOT RUN THESE TESTS ON A PRODUCTION SYSTEM OR ON ANY SYSTEM WHERE YOU NEED
TO RETAIN YOUR DATA.


== Installation ==

If you used composer to install MediaWiki's dependencies PHPUnit will already be available, unless
you explicitly specified the --no-dev flag during the install. In this case just run "composer update".

Otherwise follow the installation instructions in the
PHPUnit Manual at:

  https://phpunit.de/manual/current/en/installation.html


== Running tests ==

The tests are run from your operating system's command line.

Ensure that you are in the tests/phpunit directory of your MediaWiki
installation.


On Unix-like operating systems, the tests runs are controlled with a makefile.
Run command:

  make help

for a full list of options for running tests.


On Windows-family operating systems, run the 'run-tests.bat' batch file.


=== Writing tests ===

A guide to writing PHP unit tests for MediaWiki can be found at:

	https://www.mediawiki.org/wiki/Manual:PHP_unit_testing