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,
59
self.assertEqual(mock_bc.call_count, 1)
60
mock_assess.assert_called_once_with(client)
63
class TestAssess(TestCase):
65
def test_assess_controller_permissions(self):
66
fake_client = make_fake_client()
67
fake_client.bootstrap()
68
assert_lc_calls = [True, True, True]
69
assert_ac_calls = [False, True, True]
70
assert_sc_calls = [False, False, True]
71
lc = patch('assess_controller_permissions.assert_login_permission',
73
ac = patch('assess_controller_permissions.assert_addmodel_permission',
75
sc = patch('assess_controller_permissions.assert_superuser_permission',
77
with lc as lc_mock, ac as ac_mock, sc as sc_mock:
78
with patch("jujupy.EnvJujuClient.expect",
79
autospec=True) as expect_mock:
80
expect_mock.return_value.isalive.return_value = False
81
assess_controller_permissions(fake_client)
83
call[0][4] for call in
84
lc_mock.call_args_list]
86
call[0][2] for call in
87
ac_mock.call_args_list]
89
call[0][2] for call in
90
sc_mock.call_args_list]
91
self.assertEqual(lc_calls,
93
self.assertEqual(ac_calls,
95
self.assertEqual(sc_calls,