Deleted Added
1import shutil
2
3import pytest
4
5from conftest import option
6from conftest import unit_run
7from conftest import unit_stop
8from unit.applications.lang.php import TestApplicationPHP

--- 12 unchanged lines hidden (view full) ---

21
22 TestFeatureIsolation().check(option.available, unit['temp_dir'])
23
24 assert unit_stop() is None
25 shutil.rmtree(unit['temp_dir'])
26
27 return check if not complete_check else check()
28
29 def test_php_isolation_rootfs(self, is_su):
30 isolation_features = option.available['features']['isolation'].keys()
31
32 if 'mnt' not in isolation_features:
33 pytest.skip('requires mnt ns')
34
35 if not is_su:
36 if 'user' not in isolation_features:
37 pytest.skip('requires unprivileged userns or root')
38
39 if not 'unprivileged_userns_clone' in isolation_features:
40 pytest.skip('requires unprivileged userns or root')
41
42 isolation = {
43 'namespaces': {'credential': not is_su, 'mount': True},
44 'rootfs': option.test_dir,
45 }
46
47 self.load('phpinfo', isolation=isolation)
48
49 assert 'success' in self.conf(
50 '"/php/phpinfo"', 'applications/phpinfo/root'
51 )
52 assert 'success' in self.conf(
53 '"/php/phpinfo"', 'applications/phpinfo/working_directory'
54 )
55
56 assert self.get()['status'] == 200, 'empty rootfs'
57
58 def test_php_isolation_rootfs_extensions(self, is_su):
59 isolation_features = option.available['features']['isolation'].keys()
60
61 if not is_su:
62 if 'user' not in isolation_features:
63 pytest.skip('requires unprivileged userns or root')
64
65 if not 'unprivileged_userns_clone' in isolation_features:
66 pytest.skip('requires unprivileged userns or root')
67
68 if 'mnt' not in isolation_features:
69 pytest.skip('requires mnt ns')
70
71 isolation = {
72 'rootfs': option.test_dir,
73 'namespaces': {'credential': not is_su, 'mount': not is_su},
74 }
75
76 self.load('list-extensions', isolation=isolation)
77
78 assert 'success' in self.conf(
79 '"/php/list-extensions"', 'applications/list-extensions/root'
80 )
81
82 assert 'success' in self.conf(
83 {'file': '/php/list-extensions/php.ini'},
84 'applications/list-extensions/options',
85 )
86
87 assert 'success' in self.conf(
88 '"/php/list-extensions"',
89 'applications/list-extensions/working_directory',
90 )
91
92 extensions = self.getjson()['body']
93
94 assert 'json' in extensions, 'json in extensions list'
95 assert 'unit' in extensions, 'unit in extensions list'