github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/provider/azure/customdata_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package azure 5 6 import ( 7 "encoding/base64" 8 9 gc "launchpad.net/gocheck" 10 11 "launchpad.net/juju-core/agent" 12 "launchpad.net/juju-core/environs" 13 "launchpad.net/juju-core/environs/cloudinit" 14 "launchpad.net/juju-core/names" 15 "launchpad.net/juju-core/state" 16 "launchpad.net/juju-core/state/api" 17 "launchpad.net/juju-core/state/api/params" 18 "launchpad.net/juju-core/testing" 19 "launchpad.net/juju-core/testing/testbase" 20 "launchpad.net/juju-core/tools" 21 ) 22 23 type customDataSuite struct { 24 testbase.LoggingSuite 25 } 26 27 var _ = gc.Suite(&customDataSuite{}) 28 29 // makeMachineConfig produces a valid cloudinit machine config. 30 func makeMachineConfig(c *gc.C) *cloudinit.MachineConfig { 31 machineID := "0" 32 return &cloudinit.MachineConfig{ 33 MachineId: machineID, 34 MachineNonce: "gxshasqlnng", 35 DataDir: environs.DataDir, 36 LogDir: agent.DefaultLogDir, 37 Jobs: []params.MachineJob{params.JobManageEnviron, params.JobHostUnits}, 38 CloudInitOutputLog: environs.CloudInitOutputLog, 39 Tools: &tools.Tools{URL: "file://" + c.MkDir()}, 40 StateInfo: &state.Info{ 41 CACert: []byte(testing.CACert), 42 Addrs: []string{"127.0.0.1:123"}, 43 Tag: names.MachineTag(machineID), 44 Password: "password", 45 }, 46 APIInfo: &api.Info{ 47 CACert: []byte(testing.CACert), 48 Addrs: []string{"127.0.0.1:123"}, 49 Tag: names.MachineTag(machineID), 50 }, 51 MachineAgentServiceName: "jujud-machine-0", 52 } 53 } 54 55 // makeBadMachineConfig produces a cloudinit machine config that cloudinit 56 // will reject as invalid. 57 func makeBadMachineConfig() *cloudinit.MachineConfig { 58 // As it happens, a default-initialized config is invalid. 59 return &cloudinit.MachineConfig{} 60 } 61 62 func (*customDataSuite) TestMakeCustomDataPropagatesError(c *gc.C) { 63 _, err := makeCustomData(makeBadMachineConfig()) 64 c.Assert(err, gc.NotNil) 65 c.Check(err, gc.ErrorMatches, "failure while generating custom data: invalid machine configuration: invalid machine id") 66 } 67 68 func (*customDataSuite) TestMakeCustomDataEncodesUserData(c *gc.C) { 69 cfg := makeMachineConfig(c) 70 71 encodedData, err := makeCustomData(cfg) 72 c.Assert(err, gc.IsNil) 73 74 data, err := base64.StdEncoding.DecodeString(encodedData) 75 c.Assert(err, gc.IsNil) 76 reference, err := environs.ComposeUserData(cfg) 77 c.Assert(err, gc.IsNil) 78 c.Check(data, gc.DeepEquals, reference) 79 }