Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(347)

Delta Between Two Patch Sets: environs/cloudinit/cloudinit_test.go

Issue 6855054: state: add CACert to Info.
Left Patch Set: state: add RootCertPEM to Info. Created 12 years, 4 months ago
Right Patch Set: state: add CACert to Info. Created 12 years, 4 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « environs/cloudinit/cloudinit.go ('k') | environs/config/authkeys.go » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 package cloudinit_test 1 package cloudinit_test
2 2
3 import ( 3 import (
4 "encoding/base64" 4 "encoding/base64"
5 . "launchpad.net/gocheck" 5 . "launchpad.net/gocheck"
6 "launchpad.net/goyaml" 6 "launchpad.net/goyaml"
7 "launchpad.net/juju-core/environs/cloudinit" 7 "launchpad.net/juju-core/environs/cloudinit"
8 "launchpad.net/juju-core/environs/config" 8 "launchpad.net/juju-core/environs/config"
9 "launchpad.net/juju-core/state" 9 "launchpad.net/juju-core/state"
10 "launchpad.net/juju-core/testing" 10 "launchpad.net/juju-core/testing"
11 "launchpad.net/juju-core/version" 11 "launchpad.net/juju-core/version"
12 "regexp" 12 "regexp"
13 "strings" 13 "strings"
14 ) 14 )
15 15
16 // Use local suite since this file lives in the ec2 package 16 // Use local suite since this file lives in the ec2 package
17 // for testing internals. 17 // for testing internals.
18 type cloudinitSuite struct{} 18 type cloudinitSuite struct{}
19 19
20 var _ = Suite(cloudinitSuite{}) 20 var _ = Suite(cloudinitSuite{})
21 21
22 var envConfig = mustNewConfig(map[string]interface{}{ 22 var envConfig = mustNewConfig(map[string]interface{}{
23 "type": "ec2", 23 "type": "ec2",
24 "name": "foo", 24 "name": "foo",
25 "default-series": "series", 25 "default-series": "series",
26 "authorized-keys": "keys", 26 "authorized-keys": "keys",
27 » "ca-cert": testing.CACertPEM, 27 » "ca-cert": testing.CACert,
28 }) 28 })
29 29
30 func mustNewConfig(m map[string]interface{}) *config.Config { 30 func mustNewConfig(m map[string]interface{}) *config.Config {
31 cfg, err := config.New(m) 31 cfg, err := config.New(m)
32 if err != nil { 32 if err != nil {
33 panic(err) 33 panic(err)
34 } 34 }
35 return cfg 35 return cfg
36 } 36 }
37 37
38 // Each test gives a cloudinit config - we check the 38 // Each test gives a cloudinit config - we check the
39 // output to see if it looks correct. 39 // output to see if it looks correct.
40 var cloudinitTests = []cloudinit.MachineConfig{ 40 var cloudinitTests = []cloudinit.MachineConfig{
41 { 41 {
42 InstanceIdAccessor: "$instance_id", 42 InstanceIdAccessor: "$instance_id",
43 MachineId: 0, 43 MachineId: 0,
44 ProviderType: "ec2", 44 ProviderType: "ec2",
45 AuthorizedKeys: "sshkey1", 45 AuthorizedKeys: "sshkey1",
46 Tools: newSimpleTools("1.2.3-linux-amd64"), 46 Tools: newSimpleTools("1.2.3-linux-amd64"),
47 StateServer: true, 47 StateServer: true,
48 » » StateServerPEM: serverPEM, 48 » » StateServerCert: serverCert,
49 » » StateServerKey: serverKey,
49 StateInfo: &state.Info{ 50 StateInfo: &state.Info{
50 Password: "arble", 51 Password: "arble",
51 }, 52 },
52 Config: envConfig, 53 Config: envConfig,
53 DataDir: "/var/lib/juju", 54 DataDir: "/var/lib/juju",
54 }, 55 },
55 { 56 {
56 MachineId: 99, 57 MachineId: 99,
57 ProviderType: "ec2", 58 ProviderType: "ec2",
58 AuthorizedKeys: "sshkey1", 59 AuthorizedKeys: "sshkey1",
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 {"missing environment configuration", func(cfg *cloudinit.MachineConfig) { 253 {"missing environment configuration", func(cfg *cloudinit.MachineConfig) {
253 cfg.Config = nil 254 cfg.Config = nil
254 }}, 255 }},
255 {"missing state info", func(cfg *cloudinit.MachineConfig) { 256 {"missing state info", func(cfg *cloudinit.MachineConfig) {
256 cfg.StateInfo = nil 257 cfg.StateInfo = nil
257 }}, 258 }},
258 {"missing state hosts", func(cfg *cloudinit.MachineConfig) { 259 {"missing state hosts", func(cfg *cloudinit.MachineConfig) {
259 cfg.StateServer = false 260 cfg.StateServer = false
260 cfg.StateInfo = &state.Info{EntityName: "machine-99"} 261 cfg.StateInfo = &state.Info{EntityName: "machine-99"}
261 }}, 262 }},
262 » {"missing state server PEM", func(cfg *cloudinit.MachineConfig) { 263 » {"missing state server certificate", func(cfg *cloudinit.MachineConfig) {
263 » » cfg.StateServerPEM = []byte{} 264 » » cfg.StateServerCert = []byte{}
265 » }},
266 » {"missing state server private key", func(cfg *cloudinit.MachineConfig) {
267 » » cfg.StateServerKey = []byte{}
264 }}, 268 }},
265 {"missing var directory", func(cfg *cloudinit.MachineConfig) { 269 {"missing var directory", func(cfg *cloudinit.MachineConfig) {
266 cfg.DataDir = "" 270 cfg.DataDir = ""
267 }}, 271 }},
268 {"missing tools", func(cfg *cloudinit.MachineConfig) { 272 {"missing tools", func(cfg *cloudinit.MachineConfig) {
269 cfg.Tools = nil 273 cfg.Tools = nil
270 }}, 274 }},
271 {"missing tools URL", func(cfg *cloudinit.MachineConfig) { 275 {"missing tools URL", func(cfg *cloudinit.MachineConfig) {
272 cfg.Tools = &state.Tools{} 276 cfg.Tools = &state.Tools{}
273 }}, 277 }},
(...skipping 23 matching lines...) Expand all
297 {"password has disallowed characters", func(cfg *cloudinit.MachineConfig ) { 301 {"password has disallowed characters", func(cfg *cloudinit.MachineConfig ) {
298 cfg.StateInfo.Password = "\n" 302 cfg.StateInfo.Password = "\n"
299 }}, 303 }},
300 } 304 }
301 305
302 // TestCloudInitVerify checks that required fields are appropriately 306 // TestCloudInitVerify checks that required fields are appropriately
303 // checked for by NewCloudInit. 307 // checked for by NewCloudInit.
304 func (cloudinitSuite) TestCloudInitVerify(c *C) { 308 func (cloudinitSuite) TestCloudInitVerify(c *C) {
305 cfg := &cloudinit.MachineConfig{ 309 cfg := &cloudinit.MachineConfig{
306 StateServer: true, 310 StateServer: true,
307 » » StateServerPEM: serverPEM, 311 » » StateServerCert: serverCert,
312 » » StateServerKey: serverKey,
308 InstanceIdAccessor: "$instance_id", 313 InstanceIdAccessor: "$instance_id",
309 ProviderType: "ec2", 314 ProviderType: "ec2",
310 MachineId: 99, 315 MachineId: 99,
311 Tools: newSimpleTools("9.9.9-linux-arble"), 316 Tools: newSimpleTools("9.9.9-linux-arble"),
312 AuthorizedKeys: "sshkey1", 317 AuthorizedKeys: "sshkey1",
313 StateInfo: &state.Info{ 318 StateInfo: &state.Info{
314 Addrs: []string{"host"}, 319 Addrs: []string{"host"},
315 }, 320 },
316 Config: envConfig, 321 Config: envConfig,
317 DataDir: "/var/lib/juju", 322 DataDir: "/var/lib/juju",
318 } 323 }
319 // check that the base configuration does not give an error 324 // check that the base configuration does not give an error
320 _, err := cloudinit.New(cfg) 325 _, err := cloudinit.New(cfg)
321 c.Assert(err, IsNil) 326 c.Assert(err, IsNil)
322 327
323 for i, test := range verifyTests { 328 for i, test := range verifyTests {
324 c.Logf("test %d. %s", i, test.err) 329 c.Logf("test %d. %s", i, test.err)
325 cfg1 := *cfg 330 cfg1 := *cfg
326 test.mutate(&cfg1) 331 test.mutate(&cfg1)
327 t, err := cloudinit.New(&cfg1) 332 t, err := cloudinit.New(&cfg1)
328 c.Assert(err, ErrorMatches, "invalid machine configuration: "+te st.err) 333 c.Assert(err, ErrorMatches, "invalid machine configuration: "+te st.err)
329 c.Assert(t, IsNil) 334 c.Assert(t, IsNil)
330 } 335 }
331 } 336 }
332 337
333 var serverPEM = []byte(` 338 var serverCert = []byte(`
334 -----BEGIN CERTIFICATE----- 339 -----BEGIN CERTIFICATE-----
335 MIIBdzCCASOgAwIBAgIBADALBgkqhkiG9w0BAQUwHjENMAsGA1UEChMEanVqdTEN 340 MIIBdzCCASOgAwIBAgIBADALBgkqhkiG9w0BAQUwHjENMAsGA1UEChMEanVqdTEN
336 MAsGA1UEAxMEcm9vdDAeFw0xMjExMDgxNjIyMzRaFw0xMzExMDgxNjI3MzRaMBwx 341 MAsGA1UEAxMEcm9vdDAeFw0xMjExMDgxNjIyMzRaFw0xMzExMDgxNjI3MzRaMBwx
337 DDAKBgNVBAoTA2htbTEMMAoGA1UEAxMDYW55MFowCwYJKoZIhvcNAQEBA0sAMEgC 342 DDAKBgNVBAoTA2htbTEMMAoGA1UEAxMDYW55MFowCwYJKoZIhvcNAQEBA0sAMEgC
338 QQCACqz6JPwM7nbxAWub+APpnNB7myckWJ6nnsPKi9SipP1hyhfzkp8RGMJ5Uv7y 343 QQCACqz6JPwM7nbxAWub+APpnNB7myckWJ6nnsPKi9SipP1hyhfzkp8RGMJ5Uv7y
339 8CSTtJ8kg/ibka1VV8LvP9tnAgMBAAGjUjBQMA4GA1UdDwEB/wQEAwIAsDAdBgNV 344 8CSTtJ8kg/ibka1VV8LvP9tnAgMBAAGjUjBQMA4GA1UdDwEB/wQEAwIAsDAdBgNV
340 HQ4EFgQU6G1ERaHCgfAv+yoDMFVpDbLOmIQwHwYDVR0jBBgwFoAUP/mfUdwOlHfk 345 HQ4EFgQU6G1ERaHCgfAv+yoDMFVpDbLOmIQwHwYDVR0jBBgwFoAUP/mfUdwOlHfk
341 fR+gLQjslxf64w0wCwYJKoZIhvcNAQEFA0EAbn0MaxWVgGYBomeLYfDdb8vCq/5/ 346 fR+gLQjslxf64w0wCwYJKoZIhvcNAQEFA0EAbn0MaxWVgGYBomeLYfDdb8vCq/5/
342 G/2iCUQCXsVrBparMLFnor/iKOkJB5n3z3rtu70rFt+DpX6L8uBR3LB3+A== 347 G/2iCUQCXsVrBparMLFnor/iKOkJB5n3z3rtu70rFt+DpX6L8uBR3LB3+A==
343 -----END CERTIFICATE----- 348 -----END CERTIFICATE-----
349 `)
350
351 var serverKey = []byte(`
344 -----BEGIN RSA PRIVATE KEY----- 352 -----BEGIN RSA PRIVATE KEY-----
345 MIIBPAIBAAJBAIAKrPok/AzudvEBa5v4A+mc0HubJyRYnqeew8qL1KKk/WHKF/OS 353 MIIBPAIBAAJBAIAKrPok/AzudvEBa5v4A+mc0HubJyRYnqeew8qL1KKk/WHKF/OS
346 nxEYwnlS/vLwJJO0nySD+JuRrVVXwu8/22cCAwEAAQJBAJsk1F0wTRuaIhJ5xxqw 354 nxEYwnlS/vLwJJO0nySD+JuRrVVXwu8/22cCAwEAAQJBAJsk1F0wTRuaIhJ5xxqw
347 FIWPFep/n5jhrDOsIs6cSaRbfIBy3rAl956pf/MHKvf/IXh7KlG9p36IW49hjQHK 355 FIWPFep/n5jhrDOsIs6cSaRbfIBy3rAl956pf/MHKvf/IXh7KlG9p36IW49hjQHK
348 7HkCIQD2CqyV1ppNPFSoCI8mSwO8IZppU3i2V4MhpwnqHz3H0wIhAIU5XIlhLJW8 356 7HkCIQD2CqyV1ppNPFSoCI8mSwO8IZppU3i2V4MhpwnqHz3H0wIhAIU5XIlhLJW8
349 TNOaFMEia/TuYofdwJnYvi9t0v4UKBWdAiEA76AtvjEoTpi3in/ri0v78zp2/KXD 357 TNOaFMEia/TuYofdwJnYvi9t0v4UKBWdAiEA76AtvjEoTpi3in/ri0v78zp2/KXD
350 JzPMDvZ0fYS30ukCIA1stlJxpFiCXQuFn0nG+jH4Q52FTv8xxBhrbLOFvHRRAiEA 358 JzPMDvZ0fYS30ukCIA1stlJxpFiCXQuFn0nG+jH4Q52FTv8xxBhrbLOFvHRRAiEA
351 2Vc9NN09ty+HZgxpwqIA1fHVuYJY9GMPG1LnTnZ9INg= 359 2Vc9NN09ty+HZgxpwqIA1fHVuYJY9GMPG1LnTnZ9INg=
352 -----END RSA PRIVATE KEY----- 360 -----END RSA PRIVATE KEY-----
353 `[1:]) 361 `[1:])
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b