github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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 out := string(renderers.WinEmbedInScript(in)) 37 encUserdata := renderers.ToBase64(utils.Gzip(in)) 38 expected := fmt.Sprintf(cloudconfig.UserDataScript, encUserdata) 39 c.Assert(out, jc.DeepEquals, expected) 40 } 41 42 func (s *RenderersSuite) TestAddPowershellTags(c *gc.C) { 43 in := []byte("test") 44 expected := []byte(`<powershell>` + string(in) + `</powershell>`) 45 out := renderers.AddPowershellTags(in) 46 c.Assert(out, jc.DeepEquals, expected) 47 } 48 49 func (s *RenderersSuite) TestRenderYAML(c *gc.C) { 50 cloudcfg := &cloudinittest.CloudConfig{YAML: []byte("yaml")} 51 d1 := func(in []byte) []byte { 52 return []byte("1." + string(in)) 53 } 54 d2 := func(in []byte) []byte { 55 return []byte("2." + string(in)) 56 } 57 out, err := renderers.RenderYAML(cloudcfg, d2, d1) 58 c.Assert(err, jc.ErrorIsNil) 59 c.Assert(string(out), jc.DeepEquals, "1.2.yaml") 60 cloudcfg.CheckCallNames(c, "RenderYAML") 61 } 62 63 func (s *RenderersSuite) TestRenderScript(c *gc.C) { 64 cloudcfg := &cloudinittest.CloudConfig{Script: "script"} 65 d1 := func(in []byte) []byte { 66 return []byte("1." + string(in)) 67 } 68 d2 := func(in []byte) []byte { 69 return []byte("2." + string(in)) 70 } 71 out, err := renderers.RenderScript(cloudcfg, d2, d1) 72 c.Assert(err, jc.ErrorIsNil) 73 c.Assert(string(out), jc.DeepEquals, "1.2.script") 74 cloudcfg.CheckCallNames(c, "RenderScript") 75 }