github.com/rogpeppe/juju@v0.0.0-20140613142852-6337964b789e/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/mongo" 16 "github.com/juju/juju/state" 17 "github.com/juju/juju/state/api" 18 "github.com/juju/juju/state/api/params" 19 "github.com/juju/juju/testing" 20 "github.com/juju/juju/tools" 21 ) 22 23 type customDataSuite struct { 24 testing.BaseSuite 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 Info: mongo.Info{ 42 CACert: testing.CACert, 43 Addrs: []string{"127.0.0.1:123"}, 44 }, 45 Tag: names.NewMachineTag(machineID).String(), 46 Password: "password", 47 }, 48 APIInfo: &api.Info{ 49 CACert: testing.CACert, 50 Addrs: []string{"127.0.0.1:123"}, 51 Tag: names.NewMachineTag(machineID).String(), 52 }, 53 MachineAgentServiceName: "jujud-machine-0", 54 } 55 } 56 57 // makeBadMachineConfig produces a cloudinit machine config that cloudinit 58 // will reject as invalid. 59 func makeBadMachineConfig() *cloudinit.MachineConfig { 60 // As it happens, a default-initialized config is invalid. 61 return &cloudinit.MachineConfig{} 62 } 63 64 func (*customDataSuite) TestMakeCustomDataPropagatesError(c *gc.C) { 65 _, err := makeCustomData(makeBadMachineConfig()) 66 c.Assert(err, gc.NotNil) 67 c.Check(err, gc.ErrorMatches, "failure while generating custom data: invalid machine configuration: invalid machine id") 68 } 69 70 func (*customDataSuite) TestMakeCustomDataEncodesUserData(c *gc.C) { 71 cfg := makeMachineConfig(c) 72 73 encodedData, err := makeCustomData(cfg) 74 c.Assert(err, gc.IsNil) 75 76 data, err := base64.StdEncoding.DecodeString(encodedData) 77 c.Assert(err, gc.IsNil) 78 reference, err := environs.ComposeUserData(cfg, nil) 79 c.Assert(err, gc.IsNil) 80 c.Check(data, gc.DeepEquals, reference) 81 }