|
17 | 17 | from subprocess import CalledProcessError |
18 | 18 | from unittest import TestCase, mock |
19 | 19 |
|
20 | | -from plainbox.impl.secure.sudo_broker import is_passwordless_sudo |
| 20 | +from plainbox.impl.secure.sudo_broker import ( |
| 21 | + is_passwordless_sudo, |
| 22 | + validate_pass, |
| 23 | +) |
21 | 24 |
|
22 | 25 |
|
23 | 26 | class IsPasswordlessSudoTests(TestCase): |
24 | 27 | @mock.patch("os.geteuid", return_value=0) |
25 | | - @mock.patch("plainbox.impl.secure.sudo_broker.check_call") |
26 | | - def test_root_happy(self, mock_check_call, mock_getuid): |
27 | | - mock_check_call.return_value = 0 |
| 28 | + @mock.patch("plainbox.impl.secure.sudo_broker.check_output") |
| 29 | + def test_root_happy(self, mock_check_output, mock_getuid): |
| 30 | + mock_check_output.return_value = 0 |
28 | 31 | self.assertTrue(is_passwordless_sudo()) |
29 | 32 |
|
30 | 33 | @mock.patch("os.geteuid", return_value=0) |
31 | | - @mock.patch("plainbox.impl.secure.sudo_broker.check_call") |
32 | | - def test_root_raising(self, mock_check_call, mock_getuid): |
33 | | - mock_check_call.side_effect = OSError |
| 34 | + @mock.patch("plainbox.impl.secure.sudo_broker.check_output") |
| 35 | + def test_root_raising(self, mock_check_output, mock_getuid): |
| 36 | + mock_check_output.side_effect = OSError |
34 | 37 |
|
35 | 38 | with self.assertRaises(SystemExit): |
36 | 39 | is_passwordless_sudo() |
37 | 40 |
|
38 | 41 | @mock.patch("os.geteuid", return_value=1000) |
39 | | - @mock.patch("plainbox.impl.secure.sudo_broker.check_call") |
40 | | - def test_non_root_happy(self, mock_check_call, mock_getuid): |
41 | | - mock_check_call.return_value = 0 |
| 42 | + @mock.patch("plainbox.impl.secure.sudo_broker.check_output") |
| 43 | + def test_non_root_happy(self, mock_check_output, mock_getuid): |
| 44 | + mock_check_output.return_value = 0 |
42 | 45 | self.assertTrue(is_passwordless_sudo()) |
43 | 46 |
|
44 | 47 | @mock.patch("os.geteuid", return_value=1000) |
45 | | - @mock.patch("plainbox.impl.secure.sudo_broker.check_call") |
46 | | - def test_non_root_raising(self, mock_check_call, mock_getuid): |
47 | | - mock_check_call.side_effect = CalledProcessError(1, "oops") |
| 48 | + @mock.patch("plainbox.impl.secure.sudo_broker.check_output") |
| 49 | + def test_non_root_raising(self, mock_check_output, mock_getuid): |
| 50 | + mock_check_output.side_effect = CalledProcessError(1, "oops") |
48 | 51 | self.assertFalse(is_passwordless_sudo()) |
| 52 | + |
| 53 | + |
| 54 | +class ValidatePassTest(TestCase): |
| 55 | + @mock.patch("plainbox.impl.secure.sudo_broker.check_call") |
| 56 | + def test_validate_pass_wrong(self, check_output_mock): |
| 57 | + check_output_mock.side_effect = CalledProcessError(1, "oops") |
| 58 | + self.assertFalse(validate_pass(b"password")) |
| 59 | + |
| 60 | + @mock.patch("plainbox.impl.secure.sudo_broker.check_call") |
| 61 | + def test_validate_pass_ok(self, check_output_mock): |
| 62 | + self.assertTrue(validate_pass(b"password")) |
0 commit comments