~andrewjbeach/juju-ci-tools/make-local-patcher

« back to all changes in this revision

Viewing changes to tests/test_assess_controller_permissions.py

Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
"""Tests for assess_controller_permissions module."""
2
 
 
3
 
import logging
4
 
from mock import Mock, patch
5
 
import StringIO
6
 
 
7
 
from assess_controller_permissions import (
8
 
    assess_controller_permissions,
9
 
    parse_args,
10
 
    main,
11
 
)
12
 
from test_assess_user_grant_revoke import (
13
 
    make_fake_client,
14
 
)
15
 
from tests import (
16
 
    parse_error,
17
 
    TestCase,
18
 
)
19
 
 
20
 
 
21
 
class TestParseArgs(TestCase):
22
 
 
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)
30
 
 
31
 
    def test_help(self):
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())
38
 
 
39
 
 
40
 
class TestMain(TestCase):
41
 
 
42
 
    def test_main(self):
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:
55
 
                        main(argv)
56
 
        mock_cl.assert_called_once_with(logging.DEBUG)
57
 
        mock_c.assert_called_once_with('an-env', "/bin/juju", debug=False,
58
 
                                       soft_deadline=None)
59
 
        self.assertEqual(mock_bc.call_count, 1)
60
 
        mock_assess.assert_called_once_with(client)
61
 
 
62
 
 
63
 
class TestAssess(TestCase):
64
 
 
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',
72
 
                   autospec=True)
73
 
        ac = patch('assess_controller_permissions.assert_addmodel_permission',
74
 
                   autospec=True)
75
 
        sc = patch('assess_controller_permissions.assert_superuser_permission',
76
 
                   autospec=True)
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)
82
 
                lc_calls = [
83
 
                    call[0][4] for call in
84
 
                    lc_mock.call_args_list]
85
 
                ac_calls = [
86
 
                    call[0][2] for call in
87
 
                    ac_mock.call_args_list]
88
 
                sc_calls = [
89
 
                    call[0][2] for call in
90
 
                    sc_mock.call_args_list]
91
 
                self.assertEqual(lc_calls,
92
 
                                 assert_lc_calls)
93
 
                self.assertEqual(ac_calls,
94
 
                                 assert_ac_calls)
95
 
                self.assertEqual(sc_calls,
96
 
                                 assert_sc_calls)