1
"""Tests for assess_controller_permissions module."""
4
from mock import Mock, patch
7
from assess_controller_permissions import (
8
assess_controller_permissions,
12
from test_assess_user_grant_revoke import (
21
class TestParseArgs(TestCase):
23
def test_common_args(self):
24
args = parse_args(["an-env", "/bin/juju", "/tmp/logs", "an-env-mod"])
25
self.assertEqual("an-env", args.env)
26
self.assertEqual("/bin/juju", args.juju_bin)
27
self.assertEqual("/tmp/logs", args.logs)
28
self.assertEqual("an-env-mod", args.temp_env_name)
29
self.assertEqual(False, args.debug)
32
fake_stdout = StringIO.StringIO()
33
with parse_error(self) as fake_stderr:
34
with patch("sys.stdout", fake_stdout):
35
parse_args(["--help"])
36
self.assertEqual("", fake_stderr.getvalue())
37
self.assertNotIn("TODO", fake_stdout.getvalue())
40
class TestMain(TestCase):
43
argv = ["an-env", "/bin/juju", "/tmp/logs", "an-env-mod", "--verbose"]
44
client = Mock(spec=["is_jes_enabled"])
45
with patch("assess_controller_permissions.configure_logging",
46
autospec=True) as mock_cl:
47
with patch("assess_controller_permissions."
48
"BootstrapManager.booted_context",
49
autospec=True) as mock_bc:
50
with patch('deploy_stack.client_from_config',
51
return_value=client) as mock_c:
52
with patch("assess_controller_permissions."
53
"assess_controller_permissions",
54
autospec=True) as mock_assess:
56
mock_cl.assert_called_once_with(logging.DEBUG)
57
mock_c.assert_called_once_with('an-env', "/bin/juju", debug=False)
58
self.assertEqual(mock_bc.call_count, 1)
59
mock_assess.assert_called_once_with(client)
62
class TestAssess(TestCase):
64
def test_assess_controller_permissions(self):
65
fake_client = make_fake_client()
66
fake_client.bootstrap()
67
assert_lc_calls = [True, True, True]
68
assert_ac_calls = [False, True, True]
69
assert_sc_calls = [False, False, True]
70
lc = patch('assess_controller_permissions.assert_login_permission',
72
ac = patch('assess_controller_permissions.assert_addmodel_permission',
74
sc = patch('assess_controller_permissions.assert_superuser_permission',
76
with lc as lc_mock, ac as ac_mock, sc as sc_mock:
77
with patch("jujupy.EnvJujuClient.expect",
78
autospec=True) as expect_mock:
79
expect_mock.return_value.isalive.return_value = False
80
assess_controller_permissions(fake_client)
82
call[0][4] for call in
83
lc_mock.call_args_list]
85
call[0][2] for call in
86
ac_mock.call_args_list]
88
call[0][2] for call in
89
sc_mock.call_args_list]
90
self.assertEqual(lc_calls,
92
self.assertEqual(ac_calls,
94
self.assertEqual(sc_calls,