github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/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 "github.com/juju/names" 10 gc "launchpad.net/gocheck" 11 12 "github.com/juju/juju/agent" 13 "github.com/juju/juju/environs" 14 "github.com/juju/juju/environs/cloudinit" 15 "github.com/juju/juju/state" 16 "github.com/juju/juju/state/api" 17 "github.com/juju/juju/state/api/params" 18 "github.com/juju/juju/testing" 19 "github.com/juju/juju/tools" 20 ) 21 22 type customDataSuite struct { 23 testing.BaseSuite 24 } 25 26 var _ = gc.Suite(&customDataSuite{}) 27 28 // makeMachineConfig produces a valid cloudinit machine config. 29 func makeMachineConfig(c *gc.C) *cloudinit.MachineConfig { 30 machineID := "0" 31 return &cloudinit.MachineConfig{ 32 MachineId: machineID, 33 MachineNonce: "gxshasqlnng", 34 DataDir: environs.DataDir, 35 LogDir: agent.DefaultLogDir, 36 Jobs: []params.MachineJob{params.JobManageEnviron, params.JobHostUnits}, 37 CloudInitOutputLog: environs.CloudInitOutputLog, 38 Tools: &tools.Tools{URL: "file://" + c.MkDir()}, 39 StateInfo: &state.Info{ 40 CACert: testing.CACert, 41 Addrs: []string{"127.0.0.1:123"}, 42 Tag: names.MachineTag(machineID), 43 Password: "password", 44 }, 45 APIInfo: &api.Info{ 46 CACert: testing.CACert, 47 Addrs: []string{"127.0.0.1:123"}, 48 Tag: names.MachineTag(machineID), 49 }, 50 MachineAgentServiceName: "jujud-machine-0", 51 } 52 } 53 54 // makeBadMachineConfig produces a cloudinit machine config that cloudinit 55 // will reject as invalid. 56 func makeBadMachineConfig() *cloudinit.MachineConfig { 57 // As it happens, a default-initialized config is invalid. 58 return &cloudinit.MachineConfig{} 59 } 60 61 func (*customDataSuite) TestMakeCustomDataPropagatesError(c *gc.C) { 62 _, err := makeCustomData(makeBadMachineConfig()) 63 c.Assert(err, gc.NotNil) 64 c.Check(err, gc.ErrorMatches, "failure while generating custom data: invalid machine configuration: invalid machine id") 65 } 66 67 func (*customDataSuite) TestMakeCustomDataEncodesUserData(c *gc.C) { 68 cfg := makeMachineConfig(c) 69 70 encodedData, err := makeCustomData(cfg) 71 c.Assert(err, gc.IsNil) 72 73 data, err := base64.StdEncoding.DecodeString(encodedData) 74 c.Assert(err, gc.IsNil) 75 reference, err := environs.ComposeUserData(cfg, nil) 76 c.Assert(err, gc.IsNil) 77 c.Check(data, gc.DeepEquals, reference) 78 }