~jimbaker/pyjuju/robust-zk-connect

« back to all changes in this revision

Viewing changes to juju/control/tests/test_config_get.py

  • Committer: kapil.thangavelu at canonical
  • Date: 2011-10-14 15:49:47 UTC
  • mfrom: (391.5.6 config-get)
  • Revision ID: kapil.thangavelu@canonical.com-20111014154947-9k774jhmnpttm9pg
merge config-get [r=fwereade,bcsaller][f=828326]

New juju subcommand for inspecting a service's current configuration and schema.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import yaml
 
2
 
 
3
from twisted.internet.defer import inlineCallbacks
 
4
 
 
5
from juju.control import main
 
6
 
 
7
from juju.charm.tests import local_charm_id
 
8
from .common import MachineControlToolTest
 
9
 
 
10
 
 
11
class ControlJujuGetTest(MachineControlToolTest):
 
12
 
 
13
    @inlineCallbacks
 
14
    def setUp(self):
 
15
        yield super(ControlJujuGetTest, self).setUp()
 
16
        config = {
 
17
            "environments": {"firstenv": {"type": "dummy"}}}
 
18
        self.write_config(yaml.dump(config))
 
19
        self.config.load()
 
20
        self.stderr = self.capture_stream("stderr")
 
21
 
 
22
    @inlineCallbacks
 
23
    def test_get_service_config(self):
 
24
        finished = self.setup_cli_reactor()
 
25
        self.setup_exit(0)
 
26
        self.mocker.replay()
 
27
 
 
28
        self.service_state = yield self.add_service_from_charm("wordpress")
 
29
        config = yield self.service_state.get_config()
 
30
        # The value which isn't in the config won't be displayed.
 
31
        settings = {"blog-title": "Hello World", "world": 123}
 
32
        config.update(settings)
 
33
        yield config.write()
 
34
 
 
35
        output = self.capture_stream("stdout")
 
36
        main(["get", "wordpress"])
 
37
 
 
38
        yield finished
 
39
        data = yaml.load(output.getvalue())
 
40
        self.assertEqual(
 
41
            {"service": "wordpress",
 
42
             "charm": "local:series/wordpress-3",
 
43
             'settings': {'blog-title': {
 
44
                 'description': 'A descriptive title used for the blog.',
 
45
                 'type': 'string',
 
46
                 'value': 'Hello World'}}},
 
47
            data)
 
48
 
 
49
    @inlineCallbacks
 
50
    def test_get_service_config_with_no_value(self):
 
51
        finished = self.setup_cli_reactor()
 
52
        self.setup_exit(0)
 
53
        self.mocker.replay()
 
54
 
 
55
        self.service_state = yield self.add_service_from_charm(
 
56
            "dummy", local_charm_id(self.charm))
 
57
        config = yield self.service_state.get_config()
 
58
        config["title"] = "hello movie"
 
59
        config["skill-level"] = 24
 
60
        yield config.write()
 
61
 
 
62
        output = self.capture_stream("stdout")
 
63
        main(["get", "dummy"])
 
64
 
 
65
        yield finished
 
66
        data = yaml.load(output.getvalue())
 
67
 
 
68
        self.assertEqual(
 
69
            {"service": "dummy",
 
70
             "charm": "local:series/dummy-1",
 
71
             "settings": {
 
72
                 'outlook': {
 
73
                     'description': 'No default outlook.',
 
74
                     'type': 'string',
 
75
                     'value': '-Not set-'},
 
76
                 'skill-level': {
 
77
                     'description': 'A number indicating skill.',
 
78
                     'value': 24,
 
79
                     'type': 'int'},
 
80
                 'title': {
 
81
                     'description': ('A descriptive title used '
 
82
                                    'for the service.'),
 
83
                     'value': 'hello movie',
 
84
                     'type': 'string'},
 
85
                 'username': {
 
86
                     'description': ('The name of the initial account (given '
 
87
                                     'admin permissions).'),
 
88
                     'default': 'admin001',
 
89
                     'value': '-Not set-',
 
90
                     'type': 'string'}}},
 
91
            data)
 
92
 
 
93
    @inlineCallbacks
 
94
    def test_set_invalid_service(self):
 
95
        finished = self.setup_cli_reactor()
 
96
        self.setup_exit(0)
 
97
        self.mocker.replay()
 
98
 
 
99
        main(["get", "whatever"])
 
100
 
 
101
        yield finished
 
102
 
 
103
        self.assertIn("Service 'whatever' was not found",
 
104
                      self.stderr.getvalue())