4
. "launchpad.net/gocheck"
5
"launchpad.net/juju-core/environs"
6
"launchpad.net/juju-core/environs/config"
7
_ "launchpad.net/juju-core/environs/dummy"
8
"launchpad.net/juju-core/testing"
14
var _ = Suite(suite{})
16
var invalidConfigTests = []struct {
20
{"'", "YAML error:.*"},
26
`, `default environment .* does not exist`,
30
func (suite) TestInvalidConfig(c *C) {
31
for i, t := range invalidConfigTests {
32
c.Logf("running test %v", i)
33
_, err := environs.ReadEnvironsBytes([]byte(t.env))
34
c.Check(err, ErrorMatches, t.err)
38
var invalidEnvTests = []struct {
47
`, "", `environment "only" has no type`,
52
`, "only", `environment "only" has no type`,
58
`, "only", `environment "only" has an unknown provider type "crazy"`,
63
`, "only", `.*state-server: expected bool, got nothing`,
69
unknown-value: causes-an-error
70
`, "only", `.*unknown-value: expected nothing, got "causes-an-error"`,
74
func (suite) TestInvalidEnv(c *C) {
75
defer testing.MakeFakeHomeNoEnvironments(c, "only").Restore()
76
for i, t := range invalidEnvTests {
77
c.Logf("running test %v", i)
78
es, err := environs.ReadEnvironsBytes([]byte(t.env))
80
e, err := es.Open(t.name)
81
c.Check(err, ErrorMatches, t.err)
86
var configTests = []struct {
88
check func(c *C, es *environs.Environs)
95
`, func(c *C, es *environs.Environs) {
98
c.Assert(e.Name(), Equals, "only")
108
`, func(c *C, es *environs.Environs) {
109
e, err := es.Open("")
110
c.Assert(err, ErrorMatches, `environment "invalid" has an unknown provider type "crazy"`)
112
e, err = es.Open("valid")
114
c.Assert(e.Name(), Equals, "valid")
123
`, func(c *C, es *environs.Environs) {
124
e, err := es.Open("")
125
c.Assert(err, ErrorMatches, `no default environment found`)
130
func (suite) TestConfig(c *C) {
131
defer testing.MakeFakeHomeNoEnvironments(c, "only", "valid", "one", "two").Restore()
132
for i, t := range configTests {
133
c.Logf("running test %v", i)
134
es, err := environs.ReadEnvironsBytes([]byte(t.env))
140
func (suite) TestDefaultConfigFile(c *C) {
141
defer testing.MakeEmptyFakeHome(c).Restore()
148
authorized-keys: i-am-a-key
150
outfile, err := environs.WriteEnvirons("", env)
152
path := testing.HomePath(".juju", "environments.yaml")
153
c.Assert(path, Equals, outfile)
155
es, err := environs.ReadEnvirons("")
157
e, err := es.Open("")
159
c.Assert(e.Name(), Equals, "only")
162
func (suite) TestNamedConfigFile(c *C) {
163
defer testing.MakeFakeHomeNoEnvironments(c, "only").Restore()
170
authorized-keys: i-am-a-key
172
path := filepath.Join(c.MkDir(), "a-file")
173
outfile, err := environs.WriteEnvirons(path, env)
175
c.Assert(path, Equals, outfile)
177
es, err := environs.ReadEnvirons(path)
179
e, err := es.Open("")
181
c.Assert(e.Name(), Equals, "only")
184
func (suite) TestConfigRoundTrip(c *C) {
185
cfg, err := config.New(map[string]interface{}{
188
"state-server": false,
189
"authorized-keys": "i-am-a-key",
190
"ca-cert": testing.CACert,
191
"ca-private-key": "",
194
provider, err := environs.Provider(cfg.Type())
196
cfg, err = provider.Validate(cfg, nil)
198
env, err := environs.New(cfg)
200
c.Assert(cfg.AllAttrs(), DeepEquals, env.Config().AllAttrs())
203
func (suite) TestBootstrapConfig(c *C) {
204
defer testing.MakeFakeHomeNoEnvironments(c, "bladaam").Restore()
205
cfg, err := config.New(map[string]interface{}{
208
"state-server": false,
209
"admin-secret": "highly",
211
"authorized-keys": "i-am-a-key",
212
"ca-cert": testing.CACert,
213
"ca-private-key": testing.CAKey,
214
"agent-version": "1.2.3",
217
cfg1, err := environs.BootstrapConfig(cfg)
220
expect := cfg.AllAttrs()
221
delete(expect, "secret")
222
expect["admin-secret"] = ""
223
expect["ca-private-key"] = ""
224
c.Assert(cfg1.AllAttrs(), DeepEquals, expect)