Deleted
Added
test_php_isolation.py (1654:fc7d0578e124) | test_php_isolation.py (1673:883f2f79c2f6) |
---|---|
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 | 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): | 29 def test_php_isolation_rootfs(self, is_su, temp_dir): |
30 isolation_features = option.available['features']['isolation'].keys() 31 | 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: | 32 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 | 33 if not 'unprivileged_userns_clone' in isolation_features: 34 pytest.skip('requires unprivileged userns or root') 35 |
42 isolation = { 43 'namespaces': {'credential': not is_su, 'mount': True}, 44 'rootfs': option.test_dir, 45 } | 36 if 'user' not in isolation_features: 37 pytest.skip('user namespace is not supported') |
46 | 38 |
39 if 'mnt' not in isolation_features: 40 pytest.skip('mnt namespace is not supported') 41 42 if 'pid' not in isolation_features: 43 pytest.skip('pid namespace is not supported') 44 45 isolation = {'rootfs': temp_dir} 46 47 if not is_su: 48 isolation['namespaces'] = { 49 'mount': True, 50 'credential': True, 51 'pid': True 52 } 53 |
|
47 self.load('phpinfo', isolation=isolation) 48 49 assert 'success' in self.conf( | 54 self.load('phpinfo', isolation=isolation) 55 56 assert 'success' in self.conf( |
50 '"/php/phpinfo"', 'applications/phpinfo/root' | 57 '"/app/php/phpinfo"', 'applications/phpinfo/root' |
51 ) 52 assert 'success' in self.conf( | 58 ) 59 assert 'success' in self.conf( |
53 '"/php/phpinfo"', 'applications/phpinfo/working_directory' | 60 '"/app/php/phpinfo"', 'applications/phpinfo/working_directory' |
54 ) 55 56 assert self.get()['status'] == 200, 'empty rootfs' 57 | 61 ) 62 63 assert self.get()['status'] == 200, 'empty rootfs' 64 |
58 def test_php_isolation_rootfs_extensions(self, is_su): | 65 def test_php_isolation_rootfs_extensions(self, is_su, temp_dir): |
59 isolation_features = option.available['features']['isolation'].keys() 60 61 if not is_su: | 66 isolation_features = option.available['features']['isolation'].keys() 67 68 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 | 69 if not 'unprivileged_userns_clone' in isolation_features: 70 pytest.skip('requires unprivileged userns or root') 71 |
72 if 'user' not in isolation_features: 73 pytest.skip('user namespace is not supported') 74 |
|
68 if 'mnt' not in isolation_features: | 75 if 'mnt' not in isolation_features: |
69 pytest.skip('requires mnt ns') | 76 pytest.skip('mnt namespace is not supported') |
70 | 77 |
71 isolation = { 72 'rootfs': option.test_dir, 73 'namespaces': {'credential': not is_su, 'mount': not is_su}, 74 } | 78 if 'pid' not in isolation_features: 79 pytest.skip('pid namespace is not supported') |
75 | 80 |
81 isolation = {'rootfs': temp_dir} 82 83 if not is_su: 84 isolation['namespaces'] = { 85 'mount': True, 86 'credential': True, 87 'pid': True 88 } 89 |
|
76 self.load('list-extensions', isolation=isolation) 77 78 assert 'success' in self.conf( | 90 self.load('list-extensions', isolation=isolation) 91 92 assert 'success' in self.conf( |
79 '"/php/list-extensions"', 'applications/list-extensions/root' | 93 '"/app/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( | 94 ) 95 96 assert 'success' in self.conf( 97 {'file': '/php/list-extensions/php.ini'}, 98 'applications/list-extensions/options', 99 ) 100 101 assert 'success' in self.conf( |
88 '"/php/list-extensions"', | 102 '"/app/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' | 103 'applications/list-extensions/working_directory', 104 ) 105 106 extensions = self.getjson()['body'] 107 108 assert 'json' in extensions, 'json in extensions list' 109 assert 'unit' in extensions, 'unit in extensions list' |