diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/test_php_isolation.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/test/test_php_isolation.py b/test/test_php_isolation.py index abaf70a2..3004a7b8 100644 --- a/test/test_php_isolation.py +++ b/test/test_php_isolation.py @@ -107,5 +107,74 @@ class TestPHPIsolation(TestApplicationPHP): self.assertIn('unit', extensions, 'unit in extensions list') + def test_php_isolation_rootfs_no_language_libs(self): + isolation_features = self.available['features']['isolation'].keys() + + if not self.is_su: + if 'user' not in isolation_features: + print('requires unprivileged userns or root') + raise unittest.SkipTest() + + if not 'unprivileged_userns_clone' in isolation_features: + print('requires unprivileged userns or root') + raise unittest.SkipTest() + + if 'mnt' not in isolation_features: + print('requires mnt ns') + raise unittest.SkipTest() + + isolation = { + 'rootfs': self.current_dir, + 'automount': {'language_deps': False}, + 'namespaces': { + 'credential': not self.is_su, + 'mount': not self.is_su, + }, + } + + self.load('list-extensions', isolation=isolation) + + self.assertIn( + 'success', + self.conf( + '"/php/list-extensions"', 'applications/list-extensions/root' + ), + ) + + self.assertIn( + 'success', + self.conf( + {'file': '/php/list-extensions/php.ini'}, + 'applications/list-extensions/options', + ), + ) + + self.assertIn( + 'success', + self.conf( + '"/php/list-extensions"', + 'applications/list-extensions/working_directory', + ), + ) + + extensions = self.getjson()['body'] + + self.assertIn('unit', extensions, 'unit in extensions list') + self.assertNotIn('json', extensions, 'json not in extensions list') + + self.assertIn( + 'success', + self.conf( + {'language_deps': True}, + 'applications/list-extensions/isolation/automount', + ), + ) + + extensions = self.getjson()['body'] + + self.assertIn('unit', extensions, 'unit in extensions list 2') + self.assertIn('json', extensions, 'json in extensions list 2') + + if __name__ == '__main__': TestPHPIsolation.main() |