92
93
"authorized-keys": "i-am-a-key",
94
"default-series": "precise",
94
96
st, err := state.Initialize(s.StateInfo(c), m)
95
97
c.Assert(err, IsNil)
96
98
c.Assert(st, NotNil)
98
100
env, err := st.EnvironConfig()
101
c.Assert(env.Map(), DeepEquals, m)
104
type environConfig map[string]interface{}
106
var environmentWatchTests = []struct {
109
want map[string]interface{}
111
{"provider", "dummy", environConfig{"provider": "dummy"}},
112
{"secret", "shhh", environConfig{"provider": "dummy", "secret": "shhh"}},
113
{"provider", "aws", environConfig{"provider": "aws", "secret": "shhh"}},
101
c.Assert(env.AllAttrs(), DeepEquals, m)
104
type attrs map[string]interface{}
106
var environmentWatchTests = []attrs{
110
"authorized-keys": "i-am-a-key",
116
"default-series": "my-series",
117
"authorized-keys": "i-am-a-key",
120
// Set a new attribute value.
122
"name": "my-new-name",
123
"default-series": "my-series",
124
"authorized-keys": "i-am-a-key",
128
var initialEnvironment = `name: test,
130
authorized-keys: i-am-a-key,
131
default-series: precise`
116
133
func (s *StateSuite) TestWatchEnvironment(c *C) {
117
// Blank out the environment created by JujuConnSuite,
134
// Re-init the environment originally created by JujuConnSuite,
118
135
// so that we know what we have.
119
_, err := s.zkConn.Set("/environment", "", -1)
136
_, err := s.zkConn.Set("/environment", initialEnvironment, -1)
120
137
c.Assert(err, IsNil)
121
// fetch the /environment key as a *ConfigNode
122
138
environConfigWatcher := s.State.WatchEnvironConfig()
124
140
c.Assert(environConfigWatcher.Stop(), IsNil)
127
config, ok := <-environConfigWatcher.Changes()
143
_, ok := <-environConfigWatcher.Changes()
128
144
c.Assert(ok, Equals, true)
130
146
for i, test := range environmentWatchTests {
131
147
c.Logf("test %d", i)
132
config.Set(test.key, test.value)
133
_, err := config.Write()
148
change, err := config.New(test)
150
err = s.State.SetEnvironConfig(change)
134
151
c.Assert(err, IsNil)
136
153
case got, ok := <-environConfigWatcher.Changes():
137
154
c.Assert(ok, Equals, true)
138
c.Assert(got.Map(), DeepEquals, test.want)
155
gotAttrs := got.AllAttrs()
156
for key, value := range test {
157
c.Assert(gotAttrs[key], Equals, value)
139
159
case <-time.After(200 * time.Millisecond):
140
c.Fatalf("did not get change: %#v", test.want)
160
c.Fatalf("did not get change: %#v", test)