1
"""Tests for assess_block module."""
6
from mock import Mock, patch, call
9
from assess_block 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_block.configure_logging",
46
autospec=True) as mock_cl:
47
with patch("assess_block.BootstrapManager.booted_context",
48
autospec=True) as mock_bc:
49
with patch("deploy_stack.client_from_config",
50
return_value=client) as mock_c:
51
with patch("assess_block.assess_block",
52
autospec=True) as mock_assess:
54
mock_cl.assert_called_once_with(logging.DEBUG)
55
mock_c.assert_called_once_with('an-env', "/bin/juju", debug=False)
56
self.assertEqual(mock_bc.call_count, 1)
57
mock_assess.assert_called_once_with(client, 'trusty')
60
class TestAssess(TestCase):
63
mock_client = Mock(spec=[
64
"juju", "wait_for_started", "get_juju_output",
65
"remove_service", "env", "deploy", "expose",
66
"destroy-model", "remove-machine", "get_status"])
67
mock_client.destroy_model_command = 'destroy-model'
68
mock_client.get_juju_output.side_effect = [
69
yaml.dump(make_block_list(mock_client, False, False, False)),
70
yaml.dump(make_block_list(mock_client, True, False, False)),
71
yaml.dump(make_block_list(mock_client, False, False, False)),
72
yaml.dump(make_block_list(mock_client, False, True, False)),
73
yaml.dump(make_block_list(mock_client, False, False, False)),
74
yaml.dump(make_block_list(mock_client, False, False, True)),
75
yaml.dump(make_block_list(mock_client, False, False, False))
77
mock_client.env.environment = 'foo'
78
mock_client.version = '1.25'
79
with patch('assess_block.deploy_dummy_stack', autospec=True):
80
with patch('assess_block.wait_for_removed_services',
82
assess_block(mock_client, 'trusty')
83
mock_client.wait_for_started.assert_called_with()
84
self.assertEqual([call('block destroy-model', ()),
86
('-y', 'foo'), include_e=False),
87
call('unblock destroy-model', ()),
88
call('block remove-object', ()),
90
('-y', 'foo'), include_e=False),
92
('dummy-source/1',), include_e=True),
93
call('remove-relation',
94
('dummy-source', 'dummy-sink'), include_e=True),
95
call('unblock remove-object', ()),
96
call('remove-relation',
97
('dummy-source', 'dummy-sink')),
98
call('block all-changes', ()),
100
('dummy-source', 'dummy-sink'), include_e=True),
102
('dummy-sink',), include_e=True),
103
call('unblock all-changes', ()),
104
call('unexpose', ('dummy-sink',)),
105
call('block all-changes', ()),
106
call('expose', ('dummy-sink',), include_e=True),
107
call('unblock all-changes', ()),
108
call('block all-changes', ()),
109
call('destroy-model',
110
('-y', 'foo'), include_e=False),
111
call('unblock all-changes', ())],
112
mock_client.juju.mock_calls)
113
self.assertEqual([call('dummy-source'),
115
call('dummy-source'),
118
mock_client.remove_service.mock_calls)