| import unittest |
| import os |
| import shutil |
| from tempfile import mkdtemp |
| from subprocess import Popen, PIPE |
| |
| |
| class SepolicyTests(unittest.TestCase): |
| |
| def assertDenied(self, err): |
| self.assert_('Permission denied' in err, |
| '"Permission denied" not found in %r' % err) |
| |
| def assertNotFound(self, err): |
| self.assert_('not found' in err, |
| '"not found" not found in %r' % err) |
| |
| def assertFailure(self, status): |
| self.assertNotEqual(status, 0, |
| 'Succeeded when it should have failed') |
| |
| def assertSuccess(self, status, err): |
| self.assertEqual(status, 0, |
| 'sepolicy should have succeeded for this test %r' % err) |
| |
| def test_man_domain(self): |
| "Verify sepolicy manpage -d works" |
| p = Popen(['sepolicy', 'manpage', '-d', 'httpd_t'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_man_all(self): |
| "Verify sepolicy manpage -a works" |
| p = Popen(['sepolicy', 'manpage', '-a'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_network_l(self): |
| "Verify sepolicy network -l works" |
| p = Popen(['sepolicy', 'network', '-l'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_network_t(self): |
| "Verify sepolicy network -t works" |
| p = Popen(['sepolicy', 'network', '-t', 'http_port_t'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_network_p(self): |
| "Verify sepolicy network -p works" |
| p = Popen(['sepolicy', 'network', '-p', '80'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_network_d(self): |
| "Verify sepolicy network -d works" |
| p = Popen(['sepolicy', 'network', '-d', 'httpd_t'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_transition_s(self): |
| "Verify sepolicy transition -s works" |
| p = Popen(['sepolicy', 'transition', '-s', 'httpd_t'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_transition_t(self): |
| "Verify sepolicy transition -t works" |
| p = Popen(['sepolicy', 'transition', '-s', 'httpd_t', '-t', 'sendmail_t'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_booleans_a(self): |
| "Verify sepolicy booleans -a works" |
| p = Popen(['sepolicy', 'booleans', '-a'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_booleans_b_alias(self): |
| "Verify sepolicy booleans -b works" |
| p = Popen(['sepolicy', 'booleans', '-b', 'allow_ypbind'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_booleans_b(self): |
| "Verify sepolicy booleans -b works" |
| p = Popen(['sepolicy', 'booleans', '-b', 'nis_enabled'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_interface_l(self): |
| "Verify sepolicy interface -l works" |
| p = Popen(['sepolicy', 'interface', '-l'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_interface_a(self): |
| "Verify sepolicy interface -a works" |
| p = Popen(['sepolicy', 'interface', '-a'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_interface_p(self): |
| "Verify sepolicy interface -u works" |
| p = Popen(['sepolicy', 'interface', '-u'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| def test_interface_ci(self): |
| "Verify sepolicy interface -c -i works" |
| p = Popen(['sepolicy', 'interface', '-c', '-i', 'apache_admin'], stdout=PIPE) |
| out, err = p.communicate() |
| self.assertSuccess(p.returncode, err) |
| |
| if __name__ == "__main__": |
| import selinux |
| if selinux.is_selinux_enabled() and selinux.security_getenforce() == 1: |
| unittest.main() |
| else: |
| print("SELinux must be in enforcing mode for this test") |