github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/cloudconfig/providerinit/renderers/common_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Copyright 2015 Cloudbase Solutions SRL 3 // Licensed under the AGPLv3, see LICENCE file for details. 4 5 package renderers_test 6 7 import ( 8 "encoding/base64" 9 "fmt" 10 11 jc "github.com/juju/testing/checkers" 12 "github.com/juju/utils" 13 gc "gopkg.in/check.v1" 14 15 "github.com/juju/juju/cloudconfig" 16 "github.com/juju/juju/cloudconfig/cloudinit/cloudinittest" 17 "github.com/juju/juju/cloudconfig/providerinit/renderers" 18 "github.com/juju/juju/testing" 19 ) 20 21 type RenderersSuite struct { 22 testing.BaseSuite 23 } 24 25 var _ = gc.Suite(&RenderersSuite{}) 26 27 func (s *RenderersSuite) TestToBase64(c *gc.C) { 28 in := []byte("test") 29 expected := base64.StdEncoding.EncodeToString(in) 30 out := renderers.ToBase64(in) 31 c.Assert(string(out), gc.Equals, expected) 32 } 33 34 func (s *RenderersSuite) TestWinEmbedInScript(c *gc.C) { 35 in := []byte("test") 36 expected := []byte(fmt.Sprintf(cloudconfig.UserdataScript, renderers.ToBase64(utils.Gzip(in)))) 37 out := renderers.WinEmbedInScript(in) 38 c.Assert(out, jc.DeepEquals, expected) 39 } 40 41 func (s *RenderersSuite) TestAddPowershellTags(c *gc.C) { 42 in := []byte("test") 43 expected := []byte(`<powershell>` + string(in) + `</powershell>`) 44 out := renderers.AddPowershellTags(in) 45 c.Assert(out, jc.DeepEquals, expected) 46 } 47 48 func (s *RenderersSuite) TestRenderYAML(c *gc.C) { 49 cloudcfg := &cloudinittest.CloudConfig{YAML: []byte("yaml")} 50 d1 := func(in []byte) []byte { 51 return []byte("1." + string(in)) 52 } 53 d2 := func(in []byte) []byte { 54 return []byte("2." + string(in)) 55 } 56 out, err := renderers.RenderYAML(cloudcfg, d2, d1) 57 c.Assert(err, jc.ErrorIsNil) 58 c.Assert(string(out), jc.DeepEquals, "1.2.yaml") 59 cloudcfg.CheckCallNames(c, "RenderYAML") 60 } 61 62 func (s *RenderersSuite) TestRenderScript(c *gc.C) { 63 cloudcfg := &cloudinittest.CloudConfig{Script: "script"} 64 d1 := func(in []byte) []byte { 65 return []byte("1." + string(in)) 66 } 67 d2 := func(in []byte) []byte { 68 return []byte("2." + string(in)) 69 } 70 out, err := renderers.RenderScript(cloudcfg, d2, d1) 71 c.Assert(err, jc.ErrorIsNil) 72 c.Assert(string(out), jc.DeepEquals, "1.2.script") 73 cloudcfg.CheckCallNames(c, "RenderScript") 74 }